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

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

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

Функция serial-head, используя дополнительные структуры: список параметров раздела (part parameters list) и запись-тип раздела (part type record), строит операторы PROGRAM или SUBROUTINE или FUNCTION в формате Промежуточного представления Fortran-DVM программы (Intermediate representation of Fortran DVM program, List FORT).

Функция makedimension, используя Таблицу имен (Symbol table), строит описания массивов в формате Промежуточного представления Fortran-DVM программы (Intermediate representation of Fortran DVM program, List FORT).

Функция description, используя Таблицу имен (Symbol table), строит описания простых переменных и внешних имен в формате Промежуточного представления Fortran-DVM программы (Intermediate representation of Fortran DVM program, List FORT).

Функция dvm-declaration, используя Таблицу распределенных переменных (Table of distributed variables) и Таблицу индексов распределения (Table of distribution indexes), строит описания PROCESSORS, ALIGN, DISTRIBUTE в формате спецкомментариев HPF и DVM Промежуточного представления Fortran-DVM программы (Intermediate representation of Fortran DVM program, List FORT).

Функция fp обрабатывает полученные предыдущими функциями операторы и описания, а также List FORT, созданный в процессе работы блока Fortran DVM intermediate representation generator. Обработка сводится к перекодировке <fortran-statements>, представленных как <sequence of token codes>, в <sequence of symbols>, разбиению <sequence of symbols> на строки по правилам представления Fortran программы и передаче этих строк функции info (блок Listing generator) для вывода в выходной файл <target-file>.

5.8Анализ файлов ввода данных (Input files analyser).

Входная точка блока Input files analyser - функция isiofile. Файлы ввода данных в языке Норма помимо собственно вводимых данных содержат и имена переменных, которые должны получить в качестве значений эти данные. Это объясняется тем, что компилятор сам определяет порядок выполнения операторов ввода, и в соответствии с этим порядком должен переупорядочить файлы ввода данных.

Синтаксис файлов ввода в языке Норма:

file :

input-element { input-element }*

input-element :

name-scalar = arithm-constant;

name-variable-on-domain ( list-index-range ) = data ;

index-range :

name-index = int-constant .. int-constant

data :

list-data-element

data-element :

int-constant

body

int-constant ( data )

Исходной информацией для блока Input files analyser являются Input variables queue и Table of input-output formats.

Общая структура управления функции isiofile приведена на следующей схеме.

i siofile trees files t1 prefmt gather


fls2 checktree shaketree in-fno


sntx

Функция trees выбирает из Input variables queue очередной элемент и передает его функции files.

Функция files вызывает функцию fls2 с аргументом <file-number> для обработки файла ввода, после чего вызывает функцию t1 для обработки элемента ввода.

Функция fls2 читает в массив строк data файл данных file с номером <file-number> (определяя его имя по таблице имен входных файлов fti) и вызывает функцию sntx для проверки синтаксической правильности содержимого этого файла.

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

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

Функция sntx осуществляет синтаксический анализ массив строк data, (содержимого файла данных file) и в случае отсутствия ошибок строит структуру данных heap, предназначенную для хранения вводных данных в том порядке, в котором они были заданы в файле данных file (этот порядок, вообще говоря, не соответствует порядку, определяемому очередью Input variables queue).

Элемент структуры данных heap имеет вид:

name-variable

name-index

range

name-index

range

data

<name-variable>::=<identifier>

<name-index>::=<identifier>

<range>::=<integer><integer>

<data>::=<Norma language notion data>

Эта информация означает, что для переменной с именем <name-variable> и индексами <name-index>=<range>, … , <name-index>=<range> в файле ввода заданы значения <data> (для scalar variable поля <name-index><range> отсутствуют).

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

error code 249 'incorrect data file: in line'<error context>’missed = or ('

error code 250 'incorrect data file: in line'<error context>’missed =’

error code 251 'incorrect data file: in line'<error context>’missed , or ; or (’

error code 252 'incorrect data file: in line'<error context>’missed , or )’

error code 253 'incorrect data file: in line'<error context>’missed identifier’

error code 254 'incorrect data file: in line'<error context>’missed number’

error code 255 'incorrect data file: in line'<error context>’missed integer’

Функция t1 получает в качестве аргумента очередной элемент Input variables queue. Поле <format> этого элемента передается функции prefmt, после чего создается структура tree, предназначенная для хранения вводных данных в порядке, определяемом очередью Input variables queue. Структура tree определяется следующим образом:

<tree>::= (<vector>) OR <tree><tree>

<vector>::=<n>’undefined

<n>::=<integer>

Количество элементов структуры tree равно числу элементов вводимой переменной. В начальный момент все значения элементов структуры tree есть значения ’undefined’. Дальнейшая обработка будет сводиться к перенесению значений из структуры heap в структуру tree вместо соответствующих ’undefined’.

Пример. Для элемента очереди

X

format

I

1

10

J

1

15

K

1

2

будет создана структура tree

((10 ’undefined’)(15 ’undefined’)) ((10 ’undefined’)(15 ’undefined’))

Функция prefmt обрабатывает поле <format> и заносит в счетчики type, count, len соответственно тип переменной, количество чисел в строке и количество позиций на число (эти счетчики будут использоваться в процессе создания строк вводного файла в функции shaketree).

Функция gather осуществляет согласование структур heap и tree для очередного элемента очереди Input variables queue: значения, соответствующие элементу очереди и находящиеся в heap, переносятся на соответствующие позиции в tree. При этом проводится анализ соответствия элемента очереди и структур heap и tree. При этом

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

error code 257 'incorrect data file: missed data for variable'<error context>

error code 258 'incorrect data file: repeatedly defined data for variable’<error context>

error code 259 'incorrect data file:there are less data for'<error context>’than defined in indexes’

error code 260 'incorrect data file: too much indexes for'<error context>

error code 261 'incorrect data file: not enough indexes for '<error context>

error code 274 'disaccordance of indexes'<error context>'and'<error context>'in variable declaration and in data file’'

error code 275 'disaccordance of indexes values of variable '<error context>' in INPUT and in data file'

Функция checktree осуществляет проверку структуры tree, построенной ранее, на определенность: в tree не должно остаться элементов со значением ’undefined’. Если это не так,

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

error code 262 'incorrect data file: there are undefined data for'<error context>

Функция shaketree создает строки итогового переупорядоченного вводного файла на основании информации из структуры tree и счетчиков type, count, len. При этом функция проверяет соответствие данных для ввода и формата ввода, представленного значениями этих счетчиков.

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

error code 264 'incorrect data file:input'<error context>’for integer variable’

error code 265 'incorrect data file:'<error context>’is longer than attribute format'

Функция in-fno получает в качестве параметра текстовую строку и заносит ее в итоговый вводной файл. Имя этого файла есть normain.in, если компилируется главный раздел Норма программы, иначе <part-name>.in.

5.9Генерация листинга (Listing generator).

Блок Listing generator содержит ряд функций, предназначенных для:

  1. вывода исходных текстов Норма-программы, Fortran DVM-программы, сообщений компилятора в файл <listing-file>,

  2. вывода Fortran DVM-программы в файл <target-file>,

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

  4. генерации текстов сообщений об ошибках и предупреждений для соответствующих строк файла <listing-file> или экрана.

Входные точки блока Listing generator - функции listing, erroutall, errpart, errprogr, info.

Функция listing выводит текст Норма-программы и сообщений периода компиляции. Общая структура управления функции listing приведена на следующей схеме.


l isting outrgm list-out outlstn errlst texterr


outrgm erroutall errpart


texterr

Функция listing анализирует режим вывода lst (lst=1 - в листинге текст Норма-программы и сообщений транслятора, lst=2 - в листинге текст Fortran DVM-программы и сообщений транслятора, lst=3 - в листинге текст Норма-программы, Fortran DVM-программы и сообщений транслятора), выводит сообщение об опциях компиляции (вызывая функцию outrgm) и для lst=1,3 вызывает функцию вывода текста Норма-программы, а для lst=2 - функцию erroutall вывода сообщений об ошибках.

Функция list-out читает исходный файл, начиная со строки с номером beginline и заканчивая строкой eline (при завершении работы функция устанавливает beginline=eline+1 - новое значение счетчика строк исходного файла, обработанных при создании листинга трансляции). Очередная строка передается функции outlstn.

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

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

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