Схема работы «чистого» компилятора: (исходная программа на ЯП) -> ЛА + СА + КУ + генерация кода -> (объектный модуль)
что есть КУ?
philosoff's.community.forum |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » philosoff's.community.forum » Учеба и ВМК. » Вопросы по СП
Схема работы «чистого» компилятора: (исходная программа на ЯП) -> ЛА + СА + КУ + генерация кода -> (объектный модуль)
что есть КУ?
контекстные условия
он же семантик анализ
контекстные условия
он же семантик анализ
о! пасиба... теперь я въехал
Схема работы «чистого» компилятора: (исходная программа на ЯП) -> ЛА + СА + КУ + генерация кода -> (объектный модуль)
что есть КУ?
"Жёлтые штаны - два раза ку!"
где можно найти вопрос:
10.Задача разбора. Дерево вывода. ?
где можно найти вопрос:
10.Задача разбора. Дерево вывода. ?
Про деревья разбора в методичке есть.
угум...
А откуда брать первые четыре теоретических вопроса?
1. Этапы жизненного цикла программного продукта.
2. Состав и схема функционирования классической системы программирования.
3. Типы трансляторов, особенности интерпретаторов и компиляторов. Смешанная стратегия трансляции.
4. Общая схема работы компилятора.
угум...
А откуда брать первые четыре теоретических вопроса?
1. Этапы жизненного цикла программного продукта.
2. Состав и схема функционирования классической системы программирования.
3. Типы трансляторов, особенности интерпретаторов и компиляторов. Смешанная стратегия трансляции.
4. Общая схема работы компилятора.
Я бы брал из головы. Первое и второе - чистая болтология.
угум...
А откуда брать первые четыре теоретических вопроса?
1. Этапы жизненного цикла программного продукта.
2. Состав и схема функционирования классической системы программирования.
3. Типы трансляторов, особенности интерпретаторов и компиляторов. Смешанная стратегия трансляции.
4. Общая схема работы компилятора.
у меня есть файлик с частью ответов на теорию... тока я хз как его выложить
ну не знаю, не знаю...
на первый, во всяком случае, можно дать вполне однозначный ответ:
1) проектирование
2) кодирование
3) тестирование и отладка
4) внедрение
5) поддержка
может и на остальные есть ответы вроде этого...
ответы на вышеперечисленные вопросы а также многое другое вы найдёте здесь:
ВОТ ЗДЕСЬ
За этот документ +1 Ярику в репу
Выкладываю ссылки на варианты зачётов за 2002-й, 2003-й и 2005-й годы (вдруг у кого-нибудь их ещё нет):
2002
2003
2005 - Вариант 1
2005 - Вариант 2
Взято с cmcmsu.no-ip.info и cmcspec.ru.
Отредактировано DiMan (2007-06-03 22:26:35)
Вот ещё, конспект лекций И.А.Волковой за 2004-й год (его, что интересно, выполнили ребята из 204-й группы )
Взято с fds-net.ru.
Отредактировано DiMan (2007-06-03 22:27:16)
Да, у меня есть такой вопросик: помнится, в ночь перед коллоквиумом появился достаточно рульный конспект лекций Руденко этого года (правда, я об этом узнал только утром перед сдачей). Очень хотелось бы проботать продолжение оного... Оно существует в природе?
Отредактировано DiMan (2007-06-03 22:09:18)
Да, у меня есть такой вопросик: помнится, в ночь перед коллоквиумом появился достаточно рульный конспект лекций Руденко этого года (правда, я об этом узнал только утром перед сдачей). Очень хотелось бы проботать продолжение оного... Оно существует в природе?
Есть рукописный контекст Руденко. За 2003-й.
Да, у меня есть такой вопросик: помнится, в ночь перед коллоквиумом появился достаточно рульный конспект лекций Руденко этого года (правда, я об этом узнал только утром перед сдачей). Очень хотелось бы проботать продолжение оного... Оно существует в природе?
если ты про файлик от Шаповалова и ко, то есть продолжение, правда кривоватое. если надо, вышлю аськой
вышли мне
Тём, а может, всё-таки на всеобщее пользование? Выложи здесь, плз. Или мне на почту пришли...
Тём, а может, всё-таки на всеобщее пользование? Выложи здесь, плз. Или мне на почту пришли...
Поддерживаю!
вышли мне
это то, что я тебе высылал
Вот результат моего сегодняшнего забота теории по СП - краткие ответы на теоретические вопросы курса.
Это переработка материала, предоставленного Ярославом, включающая в себя инфу из "Формальных грамматик и языков" Руденко, конспекта лекций И. А. Волковой за 2004-й год и конспекта лекций Т. В. Руденко за 2007-й год.
Пока в ней отсутствуют следующие вопросы:
20. Объектная модель лексического анализатора. Схема его работы.
26. Объектная модель синтаксического анализатора.
27. Использование исключений С++ при обработке синтаксических ошибок и нарушении контекстных условий.
30. ПОЛИЗ выражений.
32. Генерация ПОЛИЗа выражений и операторов.
34. Использование исключений С++ при обработке ошибок периода выполнения.
36. Принципы реализации виртуальных функций.
Соответственно, выношу их на повестку дня. И если по 20, 26 и 27 я ещё могу что-то сказать, то остальные 4 перечисленных вопроса пока вгоняют меня в ступор. :ph34r: Каким боком здесь оказались виртуальные функции, мне вообще непонятно.
UPD. Версия немного обновлена.
Отредактировано DiMan (2007-06-04 22:26:29)
У меня пара вопросов по машинно-независимой оптимизации (приводимые куски встречались и в исходном тексте, и в том, который remade by DiMan)
1)
a) Удаление бесполезных присваиваний a=b*c; d=b+c; a=d*c; => p=2a; a=b*c; d=*p+c; a=d*c;
Я полагал, что лишним тут является только первое присваивание
Во что это оптимизируется, мне ну совсем непонятно
Что такое p=2a? и что за звездочку мы от него берем?
В общем, налицо или куча опечатаг, или мое банальное невтыкание во все происходящее... Дим, ты проверял эту тему? Если нет, проверь плз
Похожие претензии к:
d) Перестановка операций: a=2*b*3+c; => a=(2*3)*(b*c);
и
e) Арифметические преобразования: a=c+b*d; => a=b*(c+d);
Да; я, если честно, не проверял это место, понадеялся на исходник...
Сейчас попробую разобраться...
Думаю, должно быть так:
a) Удаление бесполезных присваиваний a=b*c; d=b+c; a=d*c; => d=b+c; a=d*c;
d) Перестановка операций: a=2*b*3*c; => a=(2*3)*(b*c);
e) Арифметические преобразования: a=b*c+b*d; => a=b*(c+d);
Соответственно обновил выложенную версию.
Отредактировано DiMan (2007-06-04 22:31:16)
Могу ответить на вопрос ПОЛИЗ выражений:
ПОЛИЗ выражений задаётся следующими правилами:
1) Если Е является простым (единственным) операндом, то его ПОЛИЗ - это и есть этот операнд Е
2) ПОЛИЗом выражения Е1 * Е2, где * - любая бинарная операция, а Е1 и Е2 - её операнды, является запись Е1' E2' *, где Е1' и Е2' - ПОЛИЗ запись выражений Е1 и Е2 соответственно
3) ПОЛИЗом выражения * Е, где * - любая унарная операция, а Е - её операнд, является запись Е' *, где Е' - ПОЛИЗ запись выражения Е
4) ПОЛИЗом выражения (Е) является ПОЛИЗ выражения Е
______________________________________________________________________________
но остальные вопросы остаются тёмным лесом и для меня. Ответьте, кто знает, плз!!!
27. Использование исключений С++ при обработке синтаксических ошибок и нарушении контекстных условий.
Тут все просто. Пихаете throw в анализатор, а вызов анализатора завертывате в catch. Если используется метод рекурсивнго спуска, то ошибка может возникать на большом уровне вложенности и, если не использовать исключения, вам прийдется гемороиться чтобы выйти из этого уровня вложенности и передать сообщение об ошибке. Прийдется делать функции с побочным эффектом, обрабатывать возникновение ошибок во вложенных функциях. А с исключениями: раз, и оно провалилось на нужный уровень, вышло из рекурсии. Удобно.
30. ПОЛИЗ выражений.
Это в руденко подробно есть.
1) Если есть переменная или константа, то её полиз - имя переменной или константа соответсвенно.
2) Если есть выражение A*B где A и B какие-то выражения, а * любая двуместная операция, то её полиз AB*.
3) Если есть одноместная операция *A то её полиз A*.
32. Генерация ПОЛИЗа выражений и операторов.
Оно в Руденко есть. Во время рекурсивного спуска генерим. Для генерации операторов вводим новые операции, как то переход, условный переход, read, write и т.п. Вводим новый тип: адрес переменной. А в остальном синтез для операторов не отличается от синтеза для выражений.
34. Использование исключений С++ при обработке ошибок периода выполнения.
А тут они хотят как их использовать или как оно работает?
36. Принципы реализации виртуальных функций.
Я знаю один способ: помимо тех свойст класса, которые мы задаем явно, каждый объект этого класса имеет таблицу указателей на функции. При вызове виртуальной функции, происходит обращение в эту таблицу, оттуда берется адрес и туда передается управление. Таблица эта заполняется при создании объекта класса.
Дальше уже можно извращаться на тему общей таблицы функций и присваивания классам уникальных идентификаторов, что жолжно сократить объем используемой памяти и т.п.
Это всё классно, спасибо, но вот на экзамене просто написать "тут все просто, пихаем throw в анализатор, а вызов анализатора завертываем в catch", я думаю, не получится.
Эх, хотел вставить ответы в тот документ, но не смог его отформатировать. Стили - это очень удобная штука! Только народ вместо этого использует смену шрифтов и размеров шрифтов. Надо бы эту менюшку по дефолту прятать как можно дальше, а стили выносить на главную панель.
я кое-что переправил в файлике, конкретнее: добавил ответы по вопросам 27, 30, 32. И ещё дополнил ответ на вопрос 31.
Посмотрите, скажите, если что исправить.
del (неправильно прочитал вопрос :X: )
Обновлённую версию можно взять тут
Отредактировано S-Strange (2007-06-05 14:14:37)
НО! Подчёркиваю, что до сих пор остаются неотвеченными следующие вопросы:
20. Объектная модель лексического анализатора. Схема его работы.
26. Объектная модель синтаксического анализатора.
34. Использование исключений С++ при обработке ошибок периода выполнения.
36. Принципы реализации виртуальных функций. (Лёхин ответ мне не понравился)
А до экзамена остальсь 1,5 дня. Если есть идеи, выкладывайте! Вместе что-нить наклепаем...
Вы здесь » philosoff's.community.forum » Учеба и ВМК. » Вопросы по СП