Содержание
Оглавление
Введение3
1.1Описание предметной области4
1.2Описание необходимой функциональности системы6
1.3Описание параметров входных данных6
1.4Описание параметров выходных данных6
1.5Описание автомата использованного для реализации системы.6
1.6Требования к программному и техническому обеспечению10
2 Рабочий проект11
2.1Инсталляция программного продукта11
2.2Описание основных классов и функций системы11
2.3Описание наиболее важных алгоритмов12
2.4Руководство пользователя13
Заключение15
Список литературы16
Выдержка из текста работы
Конструкция на Паскале |
Эквивалентная конструкция на Си |
|
Операторные скобки begin…end |
{…} |
|
Оператор var |
||
var <name>:<type>; <name>,<name>:<type>; label <name>; |
<type> <name>,<name>; <type> <name>; |
|
Тип переменной |
||
<name>:char; |
char <name>; |
|
Rewrite(<name>) |
createFile(<name>) |
|
Assign(<name>,<path>) |
<name> = fopen(<path>,”w”) |
|
Write(<file>,'<text>’) |
fprintf(<file>,”text”) |
|
<name> = file of <type> |
FILE * <name> |
|
case <name> of <name> : <operator >; <name> : <operator>; end; |
switch(<name>){ case <name>: <operator>; case <name>:<operator> |
|
{ комментарий 1 } (*комментарий 2*) |
/*комментарий 1*/ /*комментарий 2*/ |
Приведем пример перевода программы с языка Си на Паскаль
Таблица 1.2 — Вид программы на Паскале и Си
Паскаль |
Си |
|
var i,k:integer; m:char; fl:file of char; begin assign(fl,’c:tuc\tuc.txt’); rewrite(fl); Case k of 1 : Begin write(‘text’); End; 2 : Begin write(‘text1’); End; 3 : Begin write(fl,’text to file’); End; End; {End Case1} end. |
#include <stdio.h> int i,k; char m; FILE *fl; void main() { fl = fopen(«c:tuc\tuc.txt»,»w»); fcreate(fl); switch(k){ case 1: { printf(«text); break; case 2: { printf(«text1); break; case 3: { fprintf(fl,»text to file»); break; }/*End Case1*/ } |
· лексический анализ
· синтаксический анализ
· семантический анализ
· генерация внутреннего представления программы
· оптимизация
· генерация объектной программы.
В конкретных компиляторах порядок этих процессов может быть несколько иным, некоторые из них могут объединяться в одну фазу, другие могут выполнятся в течение всего процесса компиляции. В интерпретаторах и при смешанной стратегии трансляции некоторые этапы могут вообще отсутствовать.
В нашей работе мы не будем реализовывать этап оптимизации и генерации объектной программы, т.к это этапы построения компиляторов, а мы лишь касаемся первой части — трансляции.
Поэтому наиболее разумным будет построение однопроходного транслятора. Лексический анализатор читает фрагмент исходного текста, необходимый для получения одной лексемы. После формирования лексемы им осуществляется вызов синтаксического анализатора и передача ему созданной лексемы в качестве параметра. Если синтаксический анализатор может построить очередной элемент промежуточного представления, то он делает это и передает построенный фрагмент генератору кода. В противном случае синтаксический анализатор возвращает управление сканеру, давая, тем самым, понять, что очередная лексема обработана и нужны новые данные.
Генератор кода функционирует аналогичным образом. По полученному фрагменту промежуточного представления он создает соответствующий фрагмент объектного кода. После этого управление возвращается синтаксическому анализатору.
По окончании исходного текста и завершении обработки всех промежуточных данных каждым из блоков лексический анализатор инициирует процесс завершения программы.
Таблица 1.3 — Таблица ключевых слов
Оператор или ключевое слово |
Номер |
|
begin |
1 |
|
end |
2 |
|
var |
3 |
|
Char |
4 |
|
boolean |
5 |
|
False |
6 |
|
true |
7 |
|
and |
8 |
|
or |
9 |
|
case |
10 |
|
assign |
11 |
|
write |
12 |
|
rewrite |
13 |
Таблица 1.4 — Таблица типов переменных
Тип |
Идентификационный номер |
|
Целочисленный |
1 |
|
Символьный |
2 |
|
Логический |
3 |
|
Файл |
4 |
Таблица 1.5 — Таблица типов слов
Тип слова |
Идентификационный номер |
|
Ошибка |
0 |
|
Пробел |
1 |
|
Строка |
2 |
|
Число |
3 |
|
Символ |
4 |
1. А.Б., К. Изучаем C++. — Санкт-Петербург: Питер, 2004.
2. Либерти Д. Освой самостоятельно C++ за 21 день. — Москва: Вильямс, 2007.
3. Саммер Г. Новые сложные задачи на C++. — Москва: Вильямс, 2005.
Размещено на