Теория формальных языков
Покупка
Тематика:
Программирование и алгоритмизация
Автор:
Магазов Сергей Салимович
Год издания: 2019
Кол-во страниц: 52
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-5273-6
Артикул: 804302.01.99
Доступ онлайн
В корзину
Пособие содержит задания для лабораторных работ по темам: «Регулярные выражения», «Автоматные грамматики», «Лексический анализатор» и «Обработка текстовой информации с помощью регулярных выражений». Приведен необходимый для выполнения заданий теоретический материал.
Для студентов, обучающихся по направлению подготовки 01.03.02 «Прикладная математика и информатика».
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
С.С. Магазов Теория формальных языков Регулярные языки Учебно-методическое пособие Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)»
УДК 512 ББК 22.12 М12 Издание доступно в электронном виде по адресу ebooks.bmstu.press/catalog/194/book2114.html Факультет «Информатика и системы управления» Кафедра «Теоретическая информатика и компьютерные технологии» Рекомендовано Научно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебно-методического пособия Рецензент канд. техн. наук, доцент кафедры «Информационная безопасность» П.Г. Ключарёв Магазов, С. С. Теория формальных языков : Регулярные языки : учебно- методическое пособие / С. С. Магазов. — Москва : Издательство МГТУ им. Н. Э. Баумана, 2019. — 50, [2] с. : ил. ISBN 978-5-7038-5273-6 Пособие содержит задания для лабораторных работ по темам: «Регулярные выражения», «Автоматные грамматики», «Лексиче- ский анализатор» и «Обработка текстовой информации с помо- щью регулярных выражений». Приведен необходимый для вы- полнения заданий теоретический материал. Для студентов, обучающихся по направлению подготовки 01.03.02 «Прикладная математика и информатика». УДК 512 ББК 22.12 МГТУ им. Н.Э. Баумана, 2019 Оформление. Издательство ISBN 978-5-7038-5273-6 МГТУ им. Н.Э. Баумана, 2019 М12
Предисловие В МГТУ им. Н.Э. Баумана для студентов третьего курса об- учения в рамках направления подготовки «Прикладная математика и информатика» читается курс лекций по теории формальных язы- ков. На лекционных занятиях подробно рассматриваются регуляр- ные языки, которые имеют большое практическое значение. Издание содержит материалы для проведения лабораторных работ по теории регулярных языков, включая следующие темы: «Регулярные выражения», «Автоматные грамматики», «Лексиче- ский анализатор». Приведены также материалы по технологии об- работки текстовой информации с помощью языка регулярных вы- ражений для С++. Пособие содержит большое количество вариантов заданий, что позволяет формировать индивидуальный пакет заданий в группах из 15 обучающихся. Часть заданий носит теоретический характер, для выполнения некоторых заданий требуется разработать про- граммы. Перед каждой тематической группой заданий даны необ- ходимые сведения из соответствующих разделов по теории регу- лярных языков. Предполагается, что обучающиеся усвоили курс дискретной математики, знакомы с принципами объектно-ориентированного программирования и языком C++. В результате выполнения лабораторных работ студент должен овладеть методами анализа текстовой информации и методами по- строения лексических анализаторов, которые являются важной ча- стью транслятора.
1. Языки слов Приведем основные определения из теории формальных язы- ков. Конечное непустое множество символов (букв) ={a1,...,an} назовем алфавитом. В алфавит Σ может быть включен пустой символ (empty или dummy), который будем обозначать как e. Сло- вом назовем конечную последовательность символов w=a0...ak, где ai . Включение в слово пустого символа e не меняет его. Дадим определение операций на словах. Конкатенацией слов называется бинарная операция, которая словам w и w′ ставит в со- ответствие слово, полученное приписыванием слова w′ в конец слова w. Конкатенацию обозначим как ww′. Множество всех слов алфавита Σ, включая пустое слово, обо- значим как Σ*, а через Σ+ обозначим Σ* без пустого слова. Определение 1.1. Языком над алфавитом Σ назовем подмно- жество слов из Σ*. Пустое подмножество также будем считать языком. Пусть L и L′ — языки над алфавитом Σ. Теоретико-множественные операции над языками: L+L′ — теоретико-множественное объединение языков; LL′ — теоретико-множественное пересечение языков; L\L′ — теоретико-множественная разность языков L и L′. Слово w принадлежит L\L′ тогда и только тогда, когда wL и wL′; Lс — дополнение языка L. Язык Lс состоит из слов Σ*, не вхо- дящих в язык L; LL′ — конкатенация языков, получается приписыванием к словам языка L слов языка L′. Будем i-й степенью языка L называть Li=L…L. Договоримся, что если хотя бы один из языков пуст, то их конкатенация LL′= — пустой язык. Итерацией L* назовем объединение всех степеней языка Li плюс пустое слово * 0 i i L L +{e}.
Дадим определение регулярного языка. Определение 1.2. Регулярное множество над алфавитом ∑ определяется следующей рекурсивной процедурой: пустое множество — регулярное множество; {e} — регулярное множество; {a} — регулярное множество, где а∑. Если P и Q — регулярные множества, то: P + Q — регулярное множество; PQ — регулярное множество; P* — регулярное множество. Регулярное множество можно задать регулярным выражени- ем, которое представляет собой формулу, построенную с помощью обозначений регулярных множеств, бинарных операций сложения и конкатенации, унарной операции итерации, а также скобок. Пример 1.1. Множество слов над алфавитом ={0, 1}, начи- нающихся с ‘0’ и заканчивающихся ‘1’, задается следующим регу- лярным выражением: 0{1,0}*1. Следующая лемма содержит тождества, позволяющие упро- щать регулярные выражения. Лемма 1.1. О свойствах регулярных множеств P + Q = Q + P P + (Q + С)= (Q + P) + С P(QС) = (PQ)С P(Q + С) = PQ + PС (Q+С)P = QP + СP еA = Aе A* = A + A* A = A + A *=e A = A= (A*)*= A* A+ = A A* = e+A+ A+ = AA* Пример 1.2. Упростим выражение: A(A* +A)+B*=AA*+B*= = A++ B*. Контрольные вопросы 1. Какой известной алгебраической структурой являются регу- лярные множества с операциями сложения и конкатенации?
2. Есть ли регулярное множество, которое играет роль нуля для операции сложения? 3. У любого ли регулярного множества есть обратный элемент для операции сложения? 4. Есть ли регулярное множество, которое играет роль едини- цы для операции конкатенации? Лабораторная работа 1 Цель — получить навыки построения регулярных выражений для заданного языка. Порядок выполнения лабораторной работы В приложении 1 дан перечень неформальных описанных языков. 1. Задайте язык регулярным выражением. 2. Если возможно, упростите полученное регулярное выраже- ние с помощью леммы 1.1. 3. Оформите лабораторную работу согласно требованиям, приведенным в приложении 7.
2. Автоматная грамматика Автоматная грамматика — самый простой вид грамматик. Эти грамматики широко используются при проектировании трансля- торов. Определение 2.1. Праволинейной грамматикой называется четверка G=(N,,P,S): N={A1…Ak,S} — множество нетерминальных символов; ={a1…al} — множество терминальных символов; P — множество правил вывода. Каждое правило имеет вид AiBiw, или S Biw, где w* и S, Bi, AiN; S — начальный или выделенный символ. Если правила вывода имеют вид AiwBi, то грамматика называ- ется леволинейной. Автоматной грамматикой называется граммати- ка, которая либо праволинейная, либо леволинейная. Определение 2.2 1. Выводом в грамматике G называется последовательность слов S, w1…wn, причем, если wi, и wi+1 — любые два смежных сло- ва, то они должны иметь вид wi=Ai , wi+1=v и в G должно найтись правило вывода вида Aiv. 2. Слово w, имеющее вывод в грамматике G, называется вы- водимым в G словом. 3. Предложением (терминальным словом) называется выво- димое в грамматике G слово, состоящее из терминальных символов. 4. Языком грамматики L(G) называется множество выводи- мых терминальных слов. Пример 2.1. Пусть L — язык над алфавитом ={0,1}, каждое слово которого состоит из подслов, состоящих из четного числа нулей, и подслов, состоящих из четного число единиц. Определим грамматику, задающую язык L: SA|B|e B00В|S ВS A11A AS
Вывод слова 000011: S; В; 00В; 0000B; 0000S; 000011A; 00011 Определение 2.3. Грамматики G1 и G2 эквивалентны, если L(G1)=L(G2). Контрольные вопросы 1. Являются ли праволинейные и леворекурсивные граммати- ки эквивалентными? 2. Можно ли один и тот же язык задать различными грамма- тиками? Лабораторная работа 2 Цель — получить навыки построения автоматных грамматик для заданных языков и построение выводов слов. Порядок выполнения лабораторной работы 1. По описанию языка из приложения 1 построить автомат- ную грамматику. 2. В приложении 2 язык задан регулярным выражением: а) если возможно, упростить регулярное выражение; б) построить по регулярному выражению эквивалентную грамматику. Построить вывод для заданного в таблице слова (см. приложение 2). 3. Оформить лабораторную работу согласно требованиям, при- веденным в приложении 7.
3. Конечные автоматы-распознаватели Регулярные языки можно задавать с помощью конечных авто- матов-распознавателей. Распознаватель легко реализовать на прак- тике как в виде программы, так и в виде электронного устройства. Определение 3.1. Недетерминированный распознаватель Буша задается пятеркой AS0=(S, , , S0, F), где: S ={s0…sm} — конечное множество состояний; ={a0…an} — конечное множество входных символов (вход- ной алфавит); δ(x,y,z) — отношение переходов δSS (transition relation); S0S — подмножество начальных состояний; FS — подмножество конечных состояний. Если на вход распознавателя, находящегося в состоянии s, по- ступил символ a, и в отношении δ есть по крайней мере два ребра s,a,s′δ, s,a,sδ, то распознаватель может перейти как в состояние s′, так и в состояние s. В этом заключается недетер- минированность распознавателя. Недетерминированные распознаватели часто используются в теоретических построениях, так как с их помощью легче записы- вать сложные алгоритмы поведения автоматов. Дадим определение важному частному случаю недетермини- рованного распознавателя, а именно детерминированному распо- знавателю. Определение 3.2. Детерминированный распознаватель зада- ется пятеркой As0=(S,,δ,s0,F), где: S ={s0…sm} — конечное множество состояний; ={a0…an} — конечное множество входных символов (вход- ной алфавит); δ(s,a) — функция переходов δ:SS; s0S — начальное состояние; FS — подмножество конечных состояний.
Рассмотрим способы задания автоматов. Конечные множества S и задаются перечислением элементов. Функцию переходов можно задать различными способами. Здесь рассмотрим таблич- ный способ задания функции переходов: S/ a0 … an s0 01 b … 0n b … … … … sm 0m b … mn b В верхнем ряду перечислены символы входного алфавита , в левом столбце состояния S. На пересечении i строки и j-го столбца стоит значение функции переходов ij b =δ(si,aj). В случае детерминированного преобразователя это просто состояние ij b S. В случае недетерминированного преобразователя это подмноже- ство состояний ij b S. Допускается, что отношение (функция) δ может быть не определено на некоторых значениях аргументов. В этом случае распознаватель называют частичным. Распознава- тель, у которого функция переходов всюду определена, называется полным. Пример 3.1. Детерминированный распознаватель A1: S={s0,s1,s2,sf} — множество внутренних состояний; ={1,2} — входной алфавит; s0 — начальное состояние; sf — конечное состояние; δ(x,y) — функция переходов. Задается следующей таблицей: S/ 1 2 s0 s1 s2 s1 sf s1 s2 s2 sf sf sf sf Пример 3.2. Зададим недетерминированный распознаватель A2: S={s0,s1,s2,sf} — множество внутренних состояний; ={1,2} — входной алфавит;
Доступ онлайн
В корзину