Редактирование: Конструирование Компиляторов, 02 лекция (от 19 февраля)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1: Строка 1:
-
[[Конструирование Компиляторов, 01 лекция (от 12 февраля)|Предыдущая лекция]] | [[Конструирование Компиляторов, 03 лекция (от 26 февраля)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
Терминальные символы, нетерминальные символы, правила (левая часть (одллжна содерждать один нетерминал), правая часть (может быть пустой)), выделенный нетерминал (аксиома), отношение выводимости. Если в конце получили терпинальную (или пустую строчку), то мы её породили. Множество порожлаемых строк — язык.
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
= Классификация грамматик =
+
-
 
+
-
Введена Хомским. Называется иерархией по Хомскому.
+
-
 
+
-
0. Выделяют нулевой уровень (грамматики типа ноль) — грамматики без ограничений на вывод, грамматики общего вида.
+
-
 
+
-
1. Дальше определяются неукорачивающие грамматики:
+
-
* α → β |α| ≤ |β|
+
-
* Отдельно допускается правило S → ε, но при этом S не должна входить ни в одну правую часть
+
-
Это неукорачивающие, или контекстно-зависимые грамматики.
+
-
 
+
-
2. Грамматики контекстно свободные. Все правила имеют такой вид:
+
-
* A → α, α ∈ (N ∪ T)*
+
-
Кроме того, в правой части разрешается иметь ε, и формально КС-грамматики не являются укорачивающими. Но позднее будет доказываться теорема, что любая КС-грамматика порождается грамматикой первого типа.
+
-
 
+
-
3. A → wB, w ∈ T*. Если w = ε, то такое правило называется цепным. Или правила могут иметь такой вид: A → w. Это праволинейные грамматики. Или грамматики типа 3 по Хомскому.
+
-
 
+
-
'''Определение''. В соответствии с тем, как поделили грамматики, можно поделить языки. Если для некоего языка существует грамматика соотв уровня, то и язык такого уровня. Ясно, что если язык является праволинейным, то он же является КС. Язык является уровнем i, если существует грамматика уровня i и не существует грамматики уровня (i + 1).
+
-
 
+
-
Если мы обозначим Z<sub>0</sub> &ge; Z<sub>1</sub> &ge; Z<sub>2</sub> &ge; Z<sub>3</sub>. То, что такой порядок, очевидно исходя из определений. На самом деле, вложение строгое.
+
-
 
+
-
'''Теорема'''. Каждый КС-язык может быть порождён неукорачивающей грамматикой.<br />
+
-
'''Доказательство'''. У нас есть КС-грамматика.
+
-
# Предположим, что мы умеем определять нетерминалы, из которых выводится &epsilon;.
+
-
# Тогда сделаем следующую вещь: рассмотрим все правила грамматики A &rarr; &alpha;, и альфу запишем след образом: выделим в &alpha; все нетерминалы, из которых выводится &epsilon;: &alpha; = &alpha;1B1&alpha;2B2 ... Bk&alpha;(k+1). И заменим такое правило группой правил на правила, где B мигает: &alpha;1&alpha;2B2 ... Bk&alpha;(k+1), &alpha;<sub>1</sub>B<sub>1</sub>&alpha;<sub>2</sub>&alpha;<sub>3</sub> ... B<sub>k</sub>&alpha;<sub>(k+1)</sub>. Таких правил будет 2<sup>k</sup>.
+
-
# Второе преобразование: удалим все правила A &rarr; &epsilon;.
+
-
# Четвёртое: Если из S выводится &epsilon;, то добавляем S': S' &rarr; &epsilon;, S' &rarr; S. Тогда мы все укорачивающие правила удалили, поэтому она КС. S' делаем аксиомой.
+
-
5.Остаётся доказать, что эта грамматика порождает тот же язык. Есть у нас какой-то вывод. На каком-то этапе B обращается в &epsilon;. тогда мы это правило заменяем на правило, где этого B нет. И можем найти в новой грамматике то правило, которое соотв тому, что B вывелось в &epsilon;
+
-
 
+
-
'''Определение'''. Две грамматики называются эквивалентными, если они порождают один и тот же язык.
+
-
 
+
-
Как определить множество:
+
-
* N0 = {Ai}, Ai &rarr; &epsilon;
+
-
* Ni = N(i&minus;1) объединение {Ai &alpha, &alpha; = Ni&minus1*}
+
-
 
+
-
Основным механизмом распознавания для нас будет машина Тьюринга (МТ).
+
-
 
+
-
Механизм синт анализа – Машина тьюринга, применённая к КС-грамматике.
+
-
Конеч автомат – МТ, применённая к гр 3-го типа.
+
-
 
+
-
Определение: МТ: T<sub>m</sub> = (Q (конеч множ-во состояний), Г(конеч множество ленточных символов), &Sigma; (входной алфавит), D (функция перехода), q0, F (множество конеч состояний))
+
-
D: (Q/F) &times; Г &rarr; Q &times; Г &times; {l, R}
+
-
q0 &in; Q;
+
-
F &in;= Q
+
-
 
+
-
Есть лента, бесконечная с одной стороны, разбитая на ячейки. На ленте начало занято, а дальше в каждой ячейке символ B (Blank). Для машины времени принципиально важно, что цисло занятых ячеек конечно. Второй важный комментарий — можно определить ленту двустороннюю. Но, так как мы требуем, что число занятых ячеек конечно, то мы можем сделать преобразование ленты.
+
-
 
+
-
Занумеруем все ячейки, начиная с единицы.
+
-
 
+
-
Что делает МТ: у неё в начале работы на ленту помещается вход w = a1 ... an, w &in &Sigma;*. Есть понятие головки — указатель, смотрит на одну из занятых ячеек ленты, есть состояние, с котором машина находится. В начале она находится в q0. Тройку (q, w, i) будем называть конфигурации машины Тьюринга. Такая конфигурация (q0, w, 1) называется начальной. Далее МТ смотрит, определена ли на данной комбинации функция перехода. На основании текущего состояния и символа она может принимать новое состояние, пишет символ и двигается вправо/вдево.
+
-
 
+
-
Отношение на множестве конфигураций, и будем говорить, что МТ начинает работать на начальной окнфигурации, попали в конфигурации (q, y, i), и каждая конфигурации получается путём предыдущей путём применения функция перехода. Дальше говорят, что если q &in; F, то есть мы попали в закл состояние, то говорят, что w принадлежит языку, опред машиной Тьюринга L(Tm) = {w | (q0, w, 1) &rArr;* (q, y, i)}. Тем самым, мы определяем язык, допускаемый (распознаваемый) МТ.
+
-
 
+
-
Любой вычислительный процесс может быть сформулирован в терминах МТ.
+
-
 
+
-
Такая МТ называется детерминированной, так как переход только один. Если функция перехода оперделена как D: (Q/F) &times; Г &rarr; 2<sup>Q &times; Г &times; {l, R}</sup>, то это недетрминированная МТ.
+
-
 
+
-
Существует теорема, которая утверждает, что нельзя по произв МТ и цепочке нельзя сказать, остановится она или нет.
+
-
 
+
-
Недетрм работает следующим образом: в некоторых из своих конфигнураций может перейти в разные конфигурации. То есть область значений это функции является множеством. В результате получается дерево возм конфигураций. Если есть хотя бы один путь, который ведёт от начальной цепочки к заключительной, то определение допускается.
+
-
 
+
-
Универсальная МТ — МТ, которая эмулирует любую МТ. У неё на ленте записывается входная информация и описание МТ.
+
-
 
+
-
Теорема. Класс языков, допускаемых МТ, эквивалентен классу языков, порождаемых грамматиками класса 0.
+
-
Доказательство. Пусть дана грамматика типа 0: L(L), L = (N, T, P, S). Возьмём такую МТ:
+
-
Tm = (Q, T, N объединение T объединение {B, #, x}, q0, F)
+
-
 
+
-
Устроена машина просто. Подали ей на вход w. Она пищет на вход аксиому и заключает её в маркеры:
+
-
w
+
-
#
+
-
S
+
-
#
+
-
 
+
-
Далее она просматривает w и справа пишет текущее слово
+
-
w
+
-
#
+
-
&gamma;
+
-
#
+
-
 
+
-
МТ обязательно должна быть недетерм, иначе не все определения она сможет отсечь. Детерм МТ для недерм существует, но она работает за экспоненту времени.
+
-
 
+
-
Если цепочка принадлежит языку, то мы рано или поздно закончим, а если не принадлежит, то она может не остановиться.
+
-
 
+
-
Обратно (придётся повозиться): Пусть дана МТ Tm = (Q, &Sigma;, Г, D, q0, F)
+
-
L = (N, &Sigma;, P, A1), N = ([&Sigma; объединение {&epsilon;}] &times; Г) объединение Q объединение {A1, A2, A3}.
+
-
 
+
-
{{Конструирование Компиляторов}}
+
-
{{Lection-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы