Заача на LL
08 Мая 2014
На последнем семинаре мы не успели разобраться с задачей на LL (задача №3 из первого варианта контрольной из предыдущего поста). Во-первых, никакого обмана трудящихся не произошло — мы всё делали правильно, только алгоритм удаления левой рекурсии нас не спас. Это тот случай, когда он не работает. Вообще говоря, не любая грамматика после удаления левой рекурсии и после левой факторизации становится LL(1)-грамматикой, поэтому ничего особенного в этом нет, хотя случай и удивительный.
Проблема решается следующим образом: заметим, что правило вида $A \to Ac\,|\,\varepsilon$ приписывают сколько угодно букв $c$ справа от нетерминала $A$, поэтому добавим в грамматику нетерминал $H$ с правилами $H \to cH\,|\,\varepsilon$, удалим правило $A \to Ac$ и заменим все правила вида $ X \to \alpha A \beta$, где $X \neq A$ на $ X \to \alpha AH \beta$.
Отмена занятия
10 Апреля 2014
Занятие 15-го апреля не состоится. Последний семинар состоится 22-го апреля, после него ожидаются только контрольные и обратная связь по контрольным.
LR-конструктор
10 Апреля 2014
Мы подошли к практической части нашего курса, почти всё что было до построения анализаторов покрывалось книгой Хопкрофта, Мотвани и Ульмана. Я рекомендую изучать алгоритмы построения анализаторов по книжке Серебрякова и по Dragon Book (Ахо, Сети, Ульман). В последней они описаны более подробно. Почему это всё работает, написано в книжке Ахо и Ульмана, но её очень сложно понять и расстояние между двумя нужными для понимания утверждениями порой достигает 100 страниц. В теории к заданиям я попытаюсь пролить свет на некоторые вещи, но это довольно трудно, и не факт что получится. Про LR-анализаторы так же написано в книжке Шеня, там есть хороший шанс понять что происходит.
Для проверки и более наглядного изучения есть конструктор анализаторов. По умолчанию все нетерминалы — заглавные буквы, все терминалы — строчные. Правила записываются в виде "A -> a|B". Каждое правило, быть может с разделителями, начинается с новой строки. Пустое слово = e.
Если запускать программу под IE, то можно, при некоторой удаче, увидеть дерево разбора анализируемого слова. Под остальными браузерами придётся включать воображение и соединять точки.
Контрольная
26 Февраля 2014
На ближайшем семинаре будет контрольная по регулярным языкам. Она будет длиться порядка 20-30 минут, пользоваться можно любыми бумажными материалами. Задачи будут простые, но содержательные.