normDDr (1158429), страница 6

Файл №1158429 normDDr (Раздаточные материалы) 6 страницаnormDDr (1158429) страница 62019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

1) задает значения переменных, используемых при чтении и записи файлов в процессе трансляции:

filein=<name>.hop - имя исходного файла, содержащего Норма-программу,

fileft=<name>.for - имя выходного файла, содержащего текст Fortran DVM-программу,

filelst=<name>.lst - имя файла листинга трансляции Норма-программы.

2) задает значение переменной, хранящей значение текущей директории:

dir=<directory-name>

3) обрабатывает опции трансляции

Возможные опции трансляции:

f-77 - трансляция в последовательный Fortran-77,

dvm - трансляция в Fortran DVM,

length=<integer> - число значащих символов идентификатора,

lst=1 - в листинге текст Норма-программы и сообщений транслятора,

lst=2 - в листинге текст Fortran DVM-программы и сообщений транслятора,

lst=3 - в листинге текст Норма-программы, Fortran DVM-программы и сообщений транслятора.

Обработка опций трансляции сводится к установке значений переменных для хранения режимов трансляции по умолчанию и переопределению этих значений, если были заданы опции трансляции.

Переменные режимов трансляции и их значения по умолчанию:

f-out =3 - трансляция в Fortran DVM

lenid=6 - 6 значащих символов в идентификаторе

lstng= 3 - режим lst=3.

4) открывает файлы fileft, filelst, filein,

5) вызывает функцию face блока Listing generator для вывода сообщений о дате, времени, версии компилятора, опциях трансляции,

6) если при выполнении пунктов 1)-5) были обнаружены ошибки, то вызывается функция erroutall блока Listing generator, иначе функция count блока Local initialization.

При анализе опций трансляции фиксируются ошибки:

error code 408 'incorrect name of source file '<error context>

error code 271 'file '<error context>' is not found'

error code 413 'incorrect compilation option '<error context>

5.Компилятор Норма-раздела (Norma part unit compilation).

Основной блок компилятора. Состоит из блоков a)-j), перечисленных в п. 1. Описание этих блоков приведено ниже.

5.1Локальная инициализация (Local initialization).

Осуществляется инициализация локальных счетчиков транслятора, используемых при трансляции раздела Норам-программы, а также Таблица имен (Symbol table), Таблица констант (Constant table). После этого вызывается входная функция beginlex блока Part unit scanner.

Общая структура управления блока Local initialization приведена на следующей схеме.

c ount tableid tablecon beginlex

5.1.1Инициализация локальных счетчиков (функция count)

osh=0 - счетчик ошибок в текущем разделе Норма-программы,

osh1=0 - счетчик предупреждений в текущем разделе Норма-программы,

met=1 - счетчик для генерации меток в Fortran-программе,

mett=8000 - счетчик для генерации меток в Fortran-программе при реализации МССГ (MSCS),

formet=40000 - счетчик для генерации меток операторов FORMAT в Fortran-программе,

err_kw=0 - счетчик числа ошибок внутри Норма-предложения,

err_kwit=0 - счетчик числа ошибок внутри конструкции ITERATION Норма-раздела,

kba=0 - счетчик номеров предложений <statement number> Норма-раздела,

itn=600 - счетчик номеров итераций <iteration number> Норма-раздела,

i=700 - счетчик для генерации имен итерируемых переменных (first result variable name, second result variable name),

rabm=0 - - счетчик для генерации имен рабочих массивов при генерации Fortran-программы,

seq=1 - признак отсутствия режима последовательных вычислений.

5.1.2Инициализация Таблицы имен(Функция tableid)

В Таблицу имен (Symbol table) заносятся строки

TAN

F

185

DTAN

F

186

DSIGN

F

187

SIGN

F

188

DATAN

F

189

DASIN

F

190

DCOS

F

191

DSIN

F

192

DEXP

F

193

DLOG10

F

194

DLOG

F

195

DABS

F

196

DMIN1

F

197

DMAX1

F

198

DSQRT

F

199

EXP

F

200

SIN

F

201

COS

F

202

SQRT

F

203

ABS

F

204

ALOG

F

205

ALOG10

F

206

ASIN

F

207

ATAN

F

208

SUM

F

209

MULT

F

210

MIN

F

211

MAX

F

212

LEFT

F

213

RIGHT

F

214

ENTIER

F

215

AMIN1

F

216

AMAX1

F

217

5.1.3Инициализация Таблицы констант (функция tablecon).

В Таблицу констант (Constant table) заносятся строки

0

I

10000

1

I

10001

5.2Лексический анализ Норма-раздела (Part unit scanner).

Общая структура управления блока Part unit scanner приведена на следующей схеме.

b eginlex

n extline

EndLex StopCompile

head_of_part

b egin_part line pkd statement lexitex

kbaht

nextline EndLex count


StopCompile

5.2.1Начало агализа (Функция beginlex)

Входная точка блока Part unit scanner.

Увеличивает счетчик bline=bline+1.

5.2.2Чтение исходного файла(Функция nextline)

1) Читает очередную строку исходного файла с Норма-программой,

Увеличивает счетчик eline=eline+1.

2) Если эта строка начинается символом ?, осуществляет чтение строк исходного файла до строки, содержащей символ ? в первой позиции (выполняя операцию eline=eline+1), после чего читает следующую строку исходного файла (bline=eline),

3) Если строка содержит комментарий, то комментарий уничтожается,

4) Если обнаружен конец файла, eof=1,

5) Иначе заменяет группы пробелов на один пробел.

5.2.3Анализ заголовка Норма-раздела(Функция begin_part)

  1. Если eof=1, вызывает StopCompile,

  2. Если строка начинается с ключевых слов MAIN PART, PART, FUNCTION, передает ее функции line,

  3. Иначе фиксирует ошибку и вызывает beginlex.

Функция фиксирует ошибку:

error code 304 'incorrect head of part'

5.2.4Выделение Норма-предложения(Функция line)

  1. Если eof=1, последовательно вызывает EndLex и StopCompile,

  2. Если предложение начинается символом # (признак режима последовательных вычислений), то seq= -seq; если seq>0, заводится очередная строка Таблицы последовательных групп (Table of ordered groups),

  3. Если в строке обнаружен ограничитель '.', анализируется контекст этого ограничителя (функция point) и в случае, если это конец Норма-предложения, это Норма-предложение исключается из строки и передается функции pkd,

  4. Иначе вызывает функцию nextline, строку-результат ее работы объединяет с текущей строкой и рекурсивно вызывает line.

Функция фиксирует ошибки:

error code 305 'missed END PART.'

error code 111 'incorrect using #...#''

error code 402 'declaration or operator is not ended with .'

5.2.5Перевод в токены(Функция pkd)

Осуществляет перевод исходного Норма-предложения в последовательность лексем, формируя Таблицу имен (Symbol table) и Таблицу констант (Constant table). Ключевые слова и ограничители распознаются явным выделением из текста.

Норма-предложение в виде последовательности лексем передается функции statement.

Функция фиксирует ошибку:

Характеристики

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7030
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее