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

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

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

Однако этот пример не может быть распространен на общийслучай по следующей причине. Класс символов всегда совпадает ровно с одним символом,каким бы длинным или коротким не был список допустимых литералов. С другой сторонуоперация объединения может содержать альтернативы произвольной длины, совершенно несвязанные между собой длиной текста. Например, следующее регулярное выражениеобразуется объединением трех альтернатив различной длины, которые лексически не связаныдруг с другом:1\.000\.000|million|”thousand thousand”Кроме того, конструкция класса символов позволяет реализовать такие возможности выбора,которые не доступны для операции объединения, в частности, спецификация интервальных иинвертированных символьных классов.Интервальный класс символов удобно применять, когда коды ASCII символов класса образуютнепрерывную возрастающую последовательность.

В этом случае класс символов можно задатьв форме интервала, где первый и последний символы разделяет дефис, который в такомконтексте становится метасимволом класса. Например, следующее регулярное выражениеопределяет класс символов, состоящий из строчных латинских букв:[a-z]При этом в классе символов может быть задано произвольное число интервалов.

Например,следующее регулярное выражение образует класс символов, в котором специфицировано триинтервала:[0-9a-fA-F]Эторегулярноевыражениепредоставляетсокращеннуюформузаписиследующейперечислительной спецификации класса символов:[0123456789abcdefABCDEF]Оба рассмотренных регулярных выражения эквивалентны и могут быть полезны для обработкичисел в позиционной системе счисления по основанию 16.Как отмечалось выше, допустимо комбинировать различные формы спецификации в пределаходногоклассасимволов.Например,следующеерегулярноевыражениеопределяеткомбинированный класс символов, который состоит из цифр, латинских букв и знакаподчеркивания:[0-9a-zA-Z_]Следует отметить, что диапазоны символов и отдельные литералы в классе могут задаваться влюбом порядке. В частности, следующее регулярное выражение эквивалентно предыдущему:[0-9a-z_A-Z]Использование знака дефиса между двумя символами, не являющимися только прописными,только строчными или только цифрами, зависит от реализации и обычно приводит к выдачепредупреждающего сообщения.

Если символ дефис должен входить в определяемый класс, егонужно поместить или первым или последним. Например, следующее регулярное выражениеудовлетворяют любой цифре, а также знакам плюс и минус:[-+0-9]В данной транскрипции, также как за границами класса символов, дефис интерпретируется какобычный литерал.В некоторых случаях более удобно задать символьный класс, указав символы, которые не могутпринадлежать ему. Для специфицирования таких инвертированных классов применяетсяметасимвол ^ (циркумфлекс), который должен быть первым символом после открывающейквадратной скобки.

Его использование иллюстрирует следующее регулярное выражение:[Qq][^u]Это регулярное выражение может быть полезно для поиска слов английского языка, где послебуквы q или Q стоит любая буква, кроме u. Вряд ли такие слова могут быть найдены, еслиисключить из рассмотрения специальные термины, имена или географические названия.Аналогичным образом метасимвол ^ позволяет инвертировать интервальный класс, когдацелесообразно исключить диапазон символов. Например, следующее регулярное выражениеудовлетворяет любому символу, не являющемуся цифрой и прописной или строчной латинскойбуквой:[^0-9a-zA-Z]Необходимо уточнить, что метасимвол циркумфлекс имеет другой специальный смысл запределами класса символов, где он обеспечивает привязку к началу строки. Следует такжеучитывать, что в классе символов он теряет свой специальный смысл и интерпретируется какобычный текстовый символ, когда занимает в квадратных скобках любую позицию, кромепервой.Циркумфлекс и дефис – типичные примеры множественной интерпретации метасимволоврегулярных выражений.

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

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

Например,следующее регулярное выражение задает символьный класс, состоящий из управляющихсимволов горизонтальной табуляции и перевода строки:[\t\n]Особенности интерпретации метасимволов в символьных классах распространяются также насимвол пробела, который хотя и не является метасимволом, но в то же время при вставкепробела в регулярное выражение его необходимо экранировать. Следует обратить внимание нато, что символ пробела не требуется экранировать в классе символов, как это необходимо за егопределами. Например, в следующем регулярном выражении для спецификации пробелаиспользуется символьный класс, множество допустимых символов которого состоит только изодного символа пробела:Lexical[ ]analysisВо многих практических случаях требуется задать предельно широкий класс символов,который допускает использовать в данной позиции входной строки любой символ, кромесимвола перевода строки.

Для достижения этого эффекта предусмотрен отдельныйметасимвол, который обозначает знак точка (.). Отсутствие в этом классе символа переводастроки объясняется строчной организацией входного потока, при которой символ переводастроки является естественным ограничителем входной информации, поступающей из потокастандартного ввода.Когда требуется выделить во входном потоке любой символ, включая символ перевода строки,можно использовать следующее регулярное выражение с конструкцией выбора:.|\nЗавершая анализ возможностей символьных классов, следует отметить, что классы символовможно рассматривать как своеобразный мини-язык регулярных выражений.

Правила,определяющие состав и функции поддерживаемых метасимволов, внутри и за пределами классасимволов полностью различны.КВАНТИФИКАТОРЫВ большинстве практически интересных случаев требуется специфицировать в регулярномвыражении возможность повторения символов входной строки. Регулярные операторы,которые обеспечивают эту возможность, обычно называют квантификаторами. ГенераторLEX поддерживает четыре квантификатора, которые обозначают метасимволы:? * + {}В регулярном выражении квантификаторы указываются после литералов, повторение которыхони обозначают. Для каждого квантификатора существует минимальное количествоэкземпляров символов текста, которые он должен обязательно найти, и максимальноеколичество повторений, больше которого он даже не пытается искать.

Предельные значенияколичества повторений различны для разных квантификаторов. Однако, при обработке входнойинформации, любой квантификатор руководствуется принципом максимального совпадения, тоесть пытается найти максимальный по длине фрагмент входного текста, который соответствуетрегулярному выражению, где он специфицирован.Простейшие возможности квантифицирования входного текста предоставляет метасимвол (?),который указывает, что предшествующий литерал регулярного выражения может повторятьсяноль или один раз. Это квантификатор применяется, когда нужно указать, что присутствиепредшествующего символа в данной позиции входного текста необязательно.Допустим, необходимо искать во входном потоке слова color или colour.

Эти слова почтиодинаковы и отличаются только одной буквой u. Следующее регулярное выражение позволяетнайти любой из указанных вариантов слова:colou?rВ данном случае метасимвол (?) обозначает, что предшествующая ему буква u являетсянеобязательным символом. Она может находиться в данной позиции текста, но ее наличие нетребуется для успеха совпадения входного слова с заданным регулярным выражением. Следуетотметить, что эквивалентный результат позволяет обеспечить операция объединения вследующей конструкции выбора:color|colourБолее богатыми возможностями обладает квантификатор *, который обозначает, что вовходном потоке может находиться любое, в том числе равное нулю, количество экземпляровпредшествующего ему символа регулярного выражения.

Это одна из классических базовыхопераций, которая известно в теории формальных языков как итерация или замыкание Клини.Одно из многочисленных практических приложений операции итерации иллюстрируетследующее регулярное выражение, которому соответствуют любые натуральные числа:[1-9][0-9]*В этом регулярном выражении квантификатор * применяется к классу символов [0-9],обеспечивая совпадение с цифровой последовательностью любой, в том числе нулевой длины.Класс символов [1-9] гарантирует наличие первой цифры натурального числа.

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

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

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

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