Алексей Молчанов - Системное программное обеспечение. Лабораторный практикум
- Название:Системное программное обеспечение. Лабораторный практикум
- Автор:
- Жанр:
- Издательство:Array Издательство «Питер»
- Год:2005
- Город:Санкт-Петербург
- ISBN:978-5-469-00391-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Молчанов - Системное программное обеспечение. Лабораторный практикум краткое содержание
Книга ориентирована на студентов, обучающихся в технических вузах по специальностям, связанным с вычислительной техникой. Но она будет также полезна всем, чья деятельность так или иначе касается разработки программного обеспечения.
Системное программное обеспечение. Лабораторный практикум - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Порядок оценки результатов работы
Выполненная курсовая работа оценивается по следующим показателям:
• содержание пояснительной записки;
• функциональность построенного компилятора;
• способность исполнителя отвечать на вопросы по содержанию пояснительной записки и по сути работы.
Текст пояснительной записки должен удовлетворять требованиям ГОСТ и стандартов университета. Содержание пояснительной записки должно удовлетворять требованиям настоящего задания на выполнение курсовой работы.
Функциональность компилятора проверяется путем подачи на его вход простейших контрольных примеров (в том числе и примеров ошибочных входных программ). При этом полученная результирующая программа проверяется методом компиляции ее в системе программирования Delphi 5 с последующим выполнением. Результат выполнения сравнивается с подсчитанным вручную результатом выполнения контрольного примера.
Функциональность компилятора в первую очередь оценивается по заданным минимальным требованиям и по работоспособности компилятора (отсутствие «зависаний» и нерегламентированных сообщений об ошибках при любых входных данных).
Дополнительные бонусы при оценке компилятора могут быть получены за следующие расширения заданной минимальной функциональности:
• реализация дополнительных ключей и параметров управления работой компилятора;
• наличие у компилятора дополнительного интерактивного интерфейса с пользователем;
• эффективная («сокращенная») обработка логических операций и операций сравнения (метод ее реализации описан в примере выполнения лабораторной работы № 4 в части, посвященной описанию генератора кода и схем СУ-перевода);
• реализация дополнительных операторов и операций входного языка. В качестве наиболее очевидного расширения входного языка предлагается реализовать оператор выхода из цикла (break) и перехода к следующей итерации цикла (continue);
• дополнительный семантический контроль входной программы;
• любые дополнительные методы оптимизации результирующей программы (как машинно-независимые, так и машинно-зависимые);
• расширенная диагностика ошибок, генерация предупреждений по поводу операторов входного языка, вызывающих сомнение с точки зрения их семантики.
Не допускается реализовывать функциональность, предусмотренную другими вариантами курсовой работы, – такая функциональность рассматривается не как дополнительный бонус, а как недостаток компилятора.
Дополнительные бонусы не учитываются и не засчитываются, если не реализована минимальная функциональность компилятора, предусмотренная вариантом задания.
Способность исполнителя курсовой работы отвечать на вопросы по содержанию пояснительной записки и по сути работы проверяется в личной беседе с преподавателем при защите курсовой работы.
Рекомендации по выполнению работы
В любом случае при знакомстве с примером выполнения работы и при выполнении работы по своему заданию надо обратить внимание на следующие основные моменты:
1. Построение грамматики входного языка – это определяющий момент в курсовой работе. Правильно построенная грамматика существенно упростит выполнение работы, а ошибки, напротив, могут существенно увеличить трудоемкость последующих этапов. Рекомендуется, построив грамматику, сразу же проконсультироваться с преподавателем, чтобы исправить возможные ошибки на ранней стадии.
2. Выполняющий курсовую работу должен решить для себя, как он будет строить лексический и синтаксический анализаторы: самостоятельно (вручную) или автоматизированным методом (с использованием специализированного ПО – рекомендуются программы LEX и YACC). Автоматизированный метод проще и быстрее, но требует от автора работы времени на освоение специализированного программного обеспечения. Возможно сочетать оба метода: например, построить лексический анализатор с помощью программы LEX (она достаточно проста в использовании), а синтаксический анализатор – вручную. Рекомендации на этот счет каждый должен выбрать, оценив свои силы в возможности освоения нового программного обеспечения.
3. Создание лексического анализатора – это этап, не представляющий особой сложности, так как построение КА для лексического анализатора представляет собой полностью формализованный процесс (при выполнении которого в первую очередь важна внимательность). Но при выполнении этого этапа главная задача не в том, чтобы грамотно построить КА – в этом, чаще всего, нет проблем, – а в том, чтобы максимально эффективно разделить анализ, выполняемый лексическим анализатором, и анализ, выполняемый анализатором синтаксическим. Как правило, чем больше работы выполняет лексический анализатор, тем лучше. Уже построив грамматику языка, нужно иметь представление о том, какие элементы языка будут выделяться на этапе лексического анализа.
4. Выбор класса КС-грамматики для создания синтаксического анализатора – это, с точки зрения автора, второй по важности этап после построения грамматики. Задание составлено так, что любой входной язык может быть задан грамматиками, анализируемыми по крайней мере тремя методами: методом рекурсивного спуска (или же ХХ(1) – грамматикой), методом на основе грамматик операторного предшествования и методом на основе LR(1) или LALR(1) – грамматик. Важно построить грамматику входного языка так, чтобы она соответствовала интересующему методу, или же уметь преобразовать ее к требуемому виду. К сожалению, тут нет формализованных рекомендаций. Самый простой подход – взять для описания грамматики языка приемы и правила, рассмотренные при выполнении лабораторной работы № 3, тогда для построения синтаксического распознавателя с большой вероятностью подойдет метод на основе грамматик операторного предшествования.
5. Выбор формы внутреннего представления программы, методов оптимизации и генерации результирующего кода – это взаимозависимые процессы. Поскольку рассмотренные ранее методы и алгоритмы были основаны на использовании триад, автор не рекомендует пытаться использовать другие формы внутреннего представления.
Необходимую дополнительную информацию можно найти в литературе по компиляторам и системам программирования [1–4, 7].
Пример выполнения курсовой работы
В качестве примера для иллюстрации выполнения курсовой работы будет взят входной язык, который, с одной стороны, не совпадает ни с одним из вариантов задания, а с другой стороны – позволяет хорошо проиллюстрировать все методы и технические приемы, которые полезны при выполнении работы.
Читать дальшеИнтервал:
Закладка: