Программно-методический комплекс для обучения процессу создания компиляторов
Логическая структура компилятора. Лексический анализ. Сканер. Синтаксический и семантический анализ. Формирование промежуточного кода. Метод четверок. Обоснование создания учебного комплекса. Описание учебного языка. Таблица терминальных символов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.11.2004 |
Размер файла | 424,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
С учетом отчислений общие затраты вычисляют по формуле 1.3
Фзп = Зобщ + Отч, (1.3)
где: Зобщ - общая заработная плата, Отч - социальные отчисления в социальные фонды:
в пенсионный фонд 28%
медицинское страхование 3,6%
социальное образование 4%
Итого отчисления составляют 35,6% от общей заработной платы.
Зобщ = Зо + Здоп, (1.4)
где: Зо - основная заработная плата, Здоп - дополнительная заработная плата;
Здоп = З·(К зон·К доп -1), (1.5)
где: З - заработная плата инженера, Кзон - коэффициент районных доплат (для зоны Урала Кзон = 1,15), где: Кдоп - коэффициент дополнительной заработной платы (Кдоп принимается в пределах от 1 до 1,1.
Принимаем К доп = 1;
З = Зч·Т, (1.6)
где: Зч - часовая заработная плата, Т - затраты времени инженера (значения рассчитаны в предыдущем пункте).
Зч = Окл /Рэф, (1.8)
Окл - сумма окладов инженера, Р эф - эффективный фонд рабочего времени.
Рэф = Ч·Д, (1.7)
где: Ч - количество часов в рабочей смене (8 часов), Д - количество рабочих дней в месяце (22 дня);
Рэф = 8·22 = 176 ч.
3.3 Расчет затрат на выполнение проекта по этапам
При учете, что оклад инженера равен 1700 рублей и Рэф=176 часов получаем часовую заработную плату
Зч = 1700 / 176 = 9,6 руб/ч
Затраты на анализ предметной области составляют:
Зан = 9,6 · 105= 1008 руб
Здоп.ан = 1008 · (1,15·1-1)= 151,2 руб
Зобщ.ан = 1008 + 151,2 = 1159,2 руб
Отчан = 1159,2 · 0,356 = 412,68 руб
Фзп.ан = 1159,2 + 412,68 ? 1600 руб
Затраты связанные с разработкой учебного комплекса составляют:
Зан = 9,6 · 152= 1459,2 руб
Здоп.ан = 1459,2 · (1,15·1-1)= 218,88 руб
Зобщ.ан = 1459,2 + 218,88 = 1678,08 руб
Отчан = 1678,08 · 0,356 = 597,4 руб
Фзп.ан = 1678,08 + 597,4 ? 2300 руб
Затраты на выполнение программной части составляют:
Зпрог = 9,6 · 175= 1680 руб
Здоп.прог = 1680 · (1,15·1-1)= 252 руб
Зобщ.прог = 1680 + 252 = 1932 руб
Отчпрог = 1932 · 0,356 = 687,8 руб
Фзп.прог = 1932 + 687,8 ? 2700 руб
Общие затраты составляют:
1600 + 2300 + 2700 ? 7000 руб
4 Рекомендации по охране труда при работе с учебным комплексом
Учебный комплекс представляет собой несколько лабораторных работ, объединяющих практическую (программную) и методическую (описательную) части.
Так как в процессе выполнения методической работы приходится заниматься за компьютером и читать методический материал, следовательно, проанализируем каким должно быть рабочее место, удовлетворяющее полноценной работе.
Необходим достаточный уровень освещенности для чтения с монитора и бумажного носителя. Чтобы не уставали глаза от различной яркости монитора и остального освещения, а также достаточной освещенности для удовлетворительной работы с бумажным носителем требуется наличие общего и местного освещения. Общая освещенность должна составлять 500лк (светильники потолочные люминесцентные типа ПУ-66-4х40), местного - 300 лк (настенный светильник типа БЛ-19-1х20Б) [11].
При работе с программой приходится работать с текстовой информацией, при этом, чтобы текст был читабельным следует установить разрешение экрана при 14” мониторе не выше 800х600, при15” не выше 960х720.
Необходимо соблюдать следующие параметры монитора:
частота кадров монитора не должна быть ниже 75 Гц;
должна быть достаточная яркость и контрастность монитора, чтобы была возможность получения информации с монитора без напряжения для глаз;
С эргономичной точки зрения необходимо следующее:
удобный доступ к дисководу, CD-ROM;
удобство работы с методической литературой;
удобное положение (по высоте) клавиатуры, либо стул, регулируемый по высоте.
Практические работы должны проводиться за компьютером на вычислительном центре, например аудитории 205. Общее освещение данной аудитории достаточно для проведения лекций, но не для работы за компьютером и чтением литературы. Поэтому требуется использование дополнительного местного освещения.
Для работы с литературой, например, методического пособия, требуется дополнительное пространство на рабочем столе. Его можно освободить, убрав со стола системный блок в стол и применив специальную конструкцию стола, показанную на рисунке 7. Стул должен быть вращающимся для удобства маневрирования, а также с регулировкой по высоте, чтобы обеспечить оптимальные условия при работе с клавиатурой и монитором.
Примерное рабочее место студента показано на рисунке 7.
Рисунок 7 - Рабочее место студента
1 - монитор, 2 - системный блок, 3 - клавиатура, 4 - стул, 5 - методический материал, 6 - стол.
Заключение
Результатом проделанной работы явилось создание учебного комплекса состоящего из двух программ LEXAN и SINAN, соответственно программа лексического и грамматического разбора. При этом была разработана общая схема компилятора с описанием структур и их взаимодействия.
При работе над проектом были созданы алгоритмы, позволяющие производить синтаксический разбор с помощью таблиц, что позволяет наглядно понять один из способов формирования деревьев грамматического разбора.
Разработка включает в себя первые два из четырех этапов учебного комплекса по созданию компилятора. Разработанная структура позволяет реализовать последующие этапы, т.к. определены последующие направления и описаны способы взаимодействия между этапами. На следующих этапах должны формироваться промежуточный и ассемблерный коды.
Данный проект позволит разобраться студентам с методами анализа программы и на практике проверить знания, полученные при изучении предмета «Системное программное обеспечение». Также является основой для дальнейшей разработки учебного комплекса.
Был выполнен экономический расчет, в результате которого были подсчитаны общие затраты на выполнение дипломного проекта, они составили 7000 рублей.
Список использованных источников
Бек Л. Введение в системное программирование.: Пер. с англ. - М.: Мир, 1998.
Грис Д. Конструирование компиляторов для цифровых вычислительных машин. - М.: Мир, 1975.
Карпов В.Э. Классическая теория компиляторов. - http://itlab.net.ru/ materials/compiler/compiler.html
Конспект лекций по теме "Трансляторы". - http://www.kulichki.net/ kit/library/transl.zip
Креншоу Д. Давайте создадим компилятор! - http://kit.kulichki.net/ crenshaw/crenshaw.html
Лабораторные работы по курсу Системное ПО. - http://www.fi.ru/~mill/ LabFl-97.htm
Основы компиляции. http://structur.h1.ru/compil.htm
Романов Е.Л. Основы построения трансляторов. - http://www.kulichki. net/kit/library/nstu_trans.zip.
Пратт Т. Языки программирования. Разработка и реализация.: Пер. с англ. - М.: Мир, 1979.
Типовые нормы времени на программирование задач для ЭВМ. - М.: Экономика, 1989.
Типовые нормы времени на разработку конструкторской документации. - М.: Экономика, 1991.
Фаронов В.В. Турбо Паскаль. Книга1. Основы Турбо Паскаля. - М.: Учебно-инженерный центр «МВТУ-ФЕСТО ДИДАКТИК», 1992.
Шаньгин В. Ф., Илюшечкин В. М., Тимофеев П. А. Программирование микропроцессорных систем. / Под ред. В. Ф. Шаньгина. - М.: Высш. шк., 1990.
Приложение А
Пример выполнения задания по работе со сканером LEXAN
Дана следующая грамматика языка:
<prog> ::= PROGRAM <prog-name> VAR <dec-list> BEGIN <stmt-list> END.
<prog-name> ::= id
<dec-list> ::= <dec> | <dec-list> ; <dec>
<dec> ::= <id-list> : <type>
<type> ::= INTEGER
<id-list> ::= id | <id-list> , id
<stmt-list> ::= <stmt> | <stmt-list> ; <stmt>
<stmt> ::= <assign> | <for>
<assign> ::= id := <exp>
<exp> ::= <term> | <exp> + <term> | <exp> - <term>
<term> ::= id | int | ( <exp> )
<for> ::= FOR <index-exp> DO <body>
<index-exp> ::= id := <exp> TO <exp>
<body> ::= <stmt> | BEGIN <begin-list> END
Используя программу LEXAN произвести следующие действия:
Выбрать элементы из таблицы терминальных символов, при желании можно изменить названия ключевых слов (таблица 1);
Написать исходный текст на учебном языке с использованием заданной грамматики;
Заполнить таблицы: - символьных имен (таблица 2);
- литералов (таблица 3);
- лексического анализа (выходных символов);
Проверить правильность заполнения таблиц встроенным анализатором;
При наличии ошибок, исправить имеющиеся, и повторно обработать программой LEXAN;
Получить листинг полученных результатов.
Сохранить результат в файл.
Сначала производится анализ, какие терминальные символы входят в грамматику: ”PROGRAM”, ”VAR”, ”BEGIN”, ”END”, ”.”, ”INTEGER”, ”;”, ”:=”, ”+”, ”-”, ”FOR”, ”DO”, ”TO”.
Исходная программа, написанная с использованием терминов исходной грамматики:
program prog1;
var
i, x:integer;
begin
x:=0;
for i:=1 to 10 do
x:=x+i;
end.
Далее выбираются терминальные символы, использованные в программе, заполняется таблица выбранных терминальных символов. Примерное представление таблицы выбранных терминальных символов показано в таблице 19.
Таблица 19
№ стр. |
Терминальный символ |
Комментарий (обозначение) |
Код |
|
1 |
PROGRAM |
1 |
||
2 |
; |
27 |
||
3 |
VAR |
2 |
||
4 |
, |
29 |
Продолжение таблицы 19
№ стр. |
Терминальный символ |
Комментарий (обозначение) |
Код |
|
5 |
: |
31 |
||
6 |
INTEGER |
5 |
||
7 |
BEGIN |
3 |
||
8 |
:= |
28 |
||
9 |
FOR |
8 |
||
10 |
TO |
9 |
||
11 |
DO |
10 |
||
12 |
+ |
32 |
||
13 |
END |
4 |
||
14 |
. |
30 |
Определяются символические имена, встречающиеся в программе, и заполняется таблица 20 в порядке их появления в тексте
Таблица 20
Специф |
Идентификатор |
Тип |
Размер, занимаемый в памяти, байт |
Относительный адрес в памяти |
|
1 |
prog1 |
||||
2 |
i |
||||
3 |
x |
В тексте определяются литералы и заносятся в таблицу 21 в порядке их появления.
Таблица 21
Специф |
Литерал |
Тип |
Размер, занимаемый в памяти, байт |
|
1 |
0 |
Integer |
2 |
|
2 |
1 |
Integer |
2 |
|
3 |
10 |
Integer |
2 |
Во время заполнения этих трех таблиц заполняется четвертая - таблица 22 (таблица выходных кодов лексем): в поле «Таблица» подставляются номера таблиц (таблица терминальных символов - №1, таблица символических имен - №2, таблица литералов - №3), в поле строка - код элемента (из таблицы 1), спецификаторы (из таблицы 2 и 3). Поле «№п.п.» заполняется автоматически.
Таблица 22
№ п.п. |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
Таблица |
1 |
2 |
1 |
1 |
2 |
1 |
2 |
1 |
1 |
1 |
1 |
2 |
1 |
3 |
1 |
|
Строка |
1 |
1 |
27 |
2 |
2 |
29 |
3 |
31 |
5 |
27 |
3 |
3 |
28 |
1 |
27 |
№ п.п. |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
Таблица |
1 |
2 |
1 |
3 |
1 |
3 |
1 |
2 |
1 |
2 |
1 |
2 |
1 |
1 |
1 |
|
Строка |
8 |
2 |
28 |
2 |
9 |
3 |
10 |
3 |
28 |
3 |
32 |
2 |
27 |
4 |
30 |
Подобные документы
Проектирование лексического и синтаксического анализаторов учебного языка. Правила преобразования логических выражений в ПОЛИЗ. Формирование триад, оптимизация их списка. Логическая структура программы. Тестирование модулей транслятора-интерпретатора.
курсовая работа [1,3 M], добавлен 28.05.2013Описание компиляторов языка С/С++: MinGW, Borland Builder, Watcom, Intel C++, Visual. Сравнение характеристик выполнения программ на примере простого кода. Проведение тестов для компиляторов, оценка скорости выполнения и компилирования, их опций.
курсовая работа [1,6 M], добавлен 05.10.2012Компиляторы - инструменты для решения вычислительных задач с использованием бинарного кода. Проблема выбора "правильного" компилятора. Применение компиляторов языка С++. Оценка MinGW, Borland Builder, Intel C++ Professional Edition, Watcom и Visual Studi.
контрольная работа [4,5 M], добавлен 05.10.2012Структура, классификация и требования к реализации компилятора. Проектирование и реализация анализирующей части компилятора языка С++. Способы реализации лексического анализа. Алгоритм работы синтаксического анализатора. Принципы программной реализации.
курсовая работа [774,2 K], добавлен 26.01.2013Особенности задач линейного программирования. Симплексный метод решения задач линейного программирования. Обоснование выбора языка, инструментария программирования, перечень идентификаторов и блок-схема алгоритма. Логическая схема работы программы.
дипломная работа [2,4 M], добавлен 13.08.2011Основные методы описания синтаксиса языков программирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта. Разработка алгоритма решения задачи. Лексический и синтаксический анализатор, семантический анализ. Структурная организация данных.
курсовая работа [680,1 K], добавлен 12.06.2011Психолого-педагогические и обще-методические аспекты использования ИКТ в образовательном процессе. Анализ сред разработки мобильных приложений и языков программирования. Технология создания программно-методического комплекса для изучения чукотского языка.
дипломная работа [5,8 M], добавлен 07.06.2014Написание программы, которая выполняет лексический и синтаксический анализ входного языка программирования, порождает таблицу лексем с указанием их типов и значений, а также строит синтаксическое дерево; текст входного языка вводится с клавиатуры.
курсовая работа [761,5 K], добавлен 23.02.2012Общие сведения о процессе наплавки, порошковых проволоках, их строении и применении. Разработка программно-методического комплекса для расчета температурного поля вылета порошковой проволоки. Логическая и информационные модели программного комплекса.
дипломная работа [1,1 M], добавлен 14.05.2010Анализ решений и выбор платформы виртуализации. Обоснование выбора VMwareESXi в качестве платформы для создания учебного класса. Системные требования к аппаратной части для выбранной платформы. Создание макета на основе сервера виртуализации VMwareESXi.
дипломная работа [4,1 M], добавлен 12.04.2017