Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spoPresentation2

.pdf
Скачиваний:
6
Добавлен:
11.05.2015
Размер:
4.74 Mб
Скачать

Лексический анализ и регулярные грамматики

Если L1 и L2 – регулярные языки, то замыкание Клини L1*, сцепление L1L2 и объединение L1 L2 – тоже регулярные

языки

Теорема Клини. Каждому регулярному языку из А* соответствует регулярное

выражение над множеством А

101

Лемма о разрастании регулярного языка

Лемма о разрастании языка (лемма о накачке) Пусть L – регулярный язык:

D L, р 1 > 0, |D|tp, G, E, J V* | D = GEJ, 0<|E|dp, D’ = GE iJ, i 1t0, D’ L.

В любой достаточно длинной строке регулярного языка всегда можно найти непустую подстроку, повторение которой произвольное кол-во раз порождает новые строки того же языка

102

Лемма о разрастании регулярного языка

Если для данного языка условия леммы не выполняются, то язык не регулярный

Если выполняются, то он регулярный

L = {0m1n | m,nt0} регулярный

L = {0n1n | nt1} нерегулярный

103

Разрешимые проблемы регулярных языков

Проблема эквивалентности. Даны два регулярных языка L1(A) и L2(A). Существует алгоритм проверки их на эквивалентность

Проблема принадлежности цепочки языку. Дан регулярный язык L(A) и цепочка D А*.

Существует алгоритм проверки цепочки на принадлежность языку

Проблема пустоты языка. Дан регулярный язык L(A). Существует алгоритм проверки, является ли этот язык пустым, т.е.

существует ли хотя бы одна цепочка DzO,

D L(A)

104

Способы задания регулярных языков

Регулярные (праволинейные и леволинейные) грамматики

конечные автоматы

регулярные множества (регулярные выражения)

105

Преобразование регулярной грамматики к автоматному виду

Дано: регулярная грамматика G(T,N,P,S)

Получить: почти эквивалентную автоматную грамматику G’(T’,N’,P’,S’)

Дополнительные условия: будем использовать леволинейную грамматику

1. N’ = N, T’ = T, S’ = S. Терминальные и нетерминальные словари переносятся в новую грамматику без изменений, аксиома сохраняется

106

Преобразование регулярной грамматики к автоматному виду

2. P’ = { p | А o Вa, либо А o a, A, B N, a T, p P }. Правила этого вида переносятся в G’

без изменений

3. P’ = P’ { p’ | Ak o Ak-1ak, k = 1,2,…,n, где

An=A, A0 = X, p P | А o Xa1a2…an, n > 1, A N, X=O либо X N, ai T, i = 1,2,…,n }, N’ = N’

{ A1, A2, …, An-1 }. Для правил с терминальной цепочкой в правой части длиной n добавляется n-1 нетерминал и n новых правил

107

Преобразование регулярной грамматики к автоматному виду

4. P’ = P’ { p | А o B, либо А o O, A, B N , p

P } цепные и O-правила переносятся в G’

без изменений

5. P’ = P’ { p | { AoC | AoCa | Aoa | AoO },p’ P’ | АoB, и p’’ P’ | { BoC | BoCa | Boa | BoO }, A,B,C N’, a T’ } \ { p | АoB }.

Цепное правило заменяется “синонимами” и удаляется

108

Преобразование регулярной грамматики к автоматному виду

6. P’ = P’ { p | { BoO | Boa }, p’ P’ | АoO, иp’’ P’ | { BoA | BoAa }, A,B, N’, A z S’, a T’

} \ { p | АoO }. O -правило заменяется

“синонимами” и удаляется

7. Если p P’ | { АoB, АoO}, вернуться к

шагу 5

109

Преобразование регулярной грамматики к автоматному виду

Пример. Грамматика описывает строковые выражения, соответствующие комментариям в С. G = ( { /,*,a,p,m }, { F,C,K }, P, F ). Здесь p - символ перевода строки (chr(13)), m - символ возврата каретки

(chr(10)), a – любой символ, кроме /,*,p,m.

Парой p,m в текстовых файлах

отмечается конец строки.

P:F o C*/ | Kpm

C o /* | C/ | C* | Ca | Cpm K o // | K/ | K* | Ka

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]