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

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

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

error code 223 'incorrect parameter of part : index' <error context>' with two conditions'

error code 225 'incorrect parameter of part :variable'<error context>' has not index’ <error context>

error code 226 'incorrect parameter of part : domain of operator ASSUME has not index '<error context>' of variable’<error context>

error code 229 'incorrect parameter of part : incorrect condition’ <error context>' on domain’'

error code 230 'incorrect parameter of part : incorrect index’ <error context>' in condition’'

error code 231 'incorrect parameter of part : incorrect variable’ <error context>' in condition on index ’ <error context>

error code 233 'incorrect parameter of part : incorrect condition on index’ <error context>' of variable’'<error context>

Функция obrraz формирует значение поля <parameter-dependencies> Таблицы функциональных зависимостей (Table of functional dependencies) из списка зависимостей param-dependency, построенных функцией paramt.

Функция zapf заносит информацию об операторе в Таблицу функциональных зависимостей (Table of functional dependencies) и тело оператора в Таблицу тел операторов (Table of operators body).

5.3.6Обработка итерации (Функция kbiter)

Осуществляет анализ и обработку iteration. Синтаксис в языке Норма:

iteration :

head-of-iteration

[ boundary-value ]

initial-value

body-of-iteration

exit-condition

end-iteration

Функция получает очередное описание итерации, представленной в Списке итераций (List of iterations), вызывая функцию kb1.

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

k biter iterzag itergr iternzn itpolag itexit

kvo1it kvo1it kvo1it

5.3.6.1Дополнительные структуры данных для обработки iteration

При обработке итерации используются следующие вспомогательные структуры данных.

Стек ite, вершина которого содержит <iteration number> обрабатываемой iteration. Используется при обработке вложенных iteration.

Признак env, определяющий тип окружения: env =’B’ при обработке boundary-value, env =’H’ при обработке initial-value, env =’P’ при обработке body-of-iteration.

Таблица итерируемых переменных (Table of iterated variables) предназначена для хранения имен итерируемых переменных и соответствующих им имен переменных-результатов (с предыдущего и текущего шагов итерации). Используется для оптимизации обработки итерируемых переменных. Структура строки Таблицы итерируемых переменных (Table of iterated variables):

iterated variable name

first result variable name

second result variable name

Таблица операторов переписи (Table of copy operators) предназначена для хранения информации о дополнительных операторах, генерируемых компилятором при реализации конструкции iteration.

Для хранения значений каждой итерируемой переменной в генерируемой компилятором Fortran-программе вводятся переменные-результаты (first result variable - для хранения значений с шага итерации n, и second result variable - для хранения значений с шага итерации n-1). При завершении очередного шага итерации (очередного витка цикла в Fortran-программе) необходимо обеспечить перепись значений second result variable в first result variable. Для этой цели компилятор генерирует оператор переписи, <statement number> которого и хранится в Таблице операторов переписи (Table of copy operators). После определения компилятором порядка выполнения операторов операторы переписи размещены в соответствующем месте Fortran-программы.

Структура строки Таблицы операторов переписи (Table of copy operators):

iteration number

<statement number><ref-on-body>

<statement number><ref-on-body>

<statement number>::=<integer>

<ref-on-body>::=<reference in Table of operators body >

5.3.6.2Функция iterzag - обработка head-of-iteration

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

head-of-iteration :

ITERATION list-iterated-element ON name-iteration-index .

iterated-element :

name-variable [ ( list-name-result ) ]

Функция заносит в стек ite <iteration number>, анализирует head-of-iteration, осуществляет описание в Таблице имен (Symbol table) переменных из list-name-result.

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

error code 53 'incorrect list element of iterated variables'<error context>

5.3.6.3Функция itergr - обработка boundary-value

Устанавливает env =’B’ и вызывает функцию kvo1it обработки Норма-предложений, входящих в iteration.

5.3.6.4Функция iternzn - обработка initial-value

Устанавливает env =’H’ и вызывает функцию kvo1it обработки Норма-предложений, входящих в iteration.

5.3.6.5Функция itpolag - обработка body-of-iteration

Устанавливает env =’P’ и вызывает функцию kvo1it обработки Норма-предложений, входящих в iteration.

5.3.6.6Функция kvo1it - обработка Норма-предложений, входящих в iteration

Функция kvo1it аналогична функции kvopr1 (см. п. 5.3.5)

scopit

k vo1it kvit

kvo2i

Функция kvopr1 в зависимости от типа оператора вызывает функцию scopit (обработка scalar-operator, аналог функции scop (см. п. 5.3.5.1)), kvit (обработка operator-ASSUME, аналог функции opv6 (см. п.5.3.5.2)) или kvo2i (обработка call-part в operator-ASSUME или вне operator-ASSUME, аналог функции kvo2 (см. п.5.3.5.3)).

Эти функции отличаются от своих аналогов действиями, которые необходимо выполнить при завершении обработки оператора.

В случае, когда вычисляемая в операторе переменная не является итерируемой переменной, дополнительных действий не требуется.

В случае, когда вычисляемая в операторе переменная является итерируемой переменной в текущей итерации, дополнительные действия связаны с согласованием iterated variable name и result variable name.

Для операторов, заданных в initial-value, необходимо заменить в левой части оператора iterated variable name на result variable name и занести информацию в Таблицу функциональных зависимостей (Table of functional dependencies), в Таблицу Что-вычисляется’ (What-compute table) и в Таблицу Где-вычисляется’ (Where-compute table) с учетом этой замены.

Для операторов из body-of-iteration функцией perzap генерируется оператор переписи для итерируемой переменной. Функция perzap заносит текст оператора в виде последовательности лексем в группу g Cписка Норма предложений (List of Norma statements) и в Таблицу тел операторов (Table of operators body), а также заносит информацию об операторе в Таблицу операторов переписи (Table of copy operators).

5.3.6.7Функция itexit - обработка exit-condition

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

exit-condition :

EXIT WHEN log-expression

Конструкция exit-condition рассматривается как scalar-operator с пустой левой частью.

Функция анализирует log-expression, вызывая функции b1 и a (см. п. 5.3.5.1), заносит информацию (вызывая функцию zapf) в Таблицу функциональных зависимостей (Table of functional dependencies) и тело log-expression в Таблицу тел операторов (Table of operators body).

Вершина стека ite очищается.

5.4Построение графа информационных зависимостей (Data dependencies graph builder).

Функция graf является входной точкой блока Data dependencies graph builder и вызывается функцией endlex блока Part unit scanner в случае, если на предыдущих этапах трансляции не было обнаружено ошибок (т.е. счетчик ошибок osh=0).

Блок Data dependencies graph builder состоит из двух основных компонентов:

  1. Построение DDG.

Функции: построение графа информационных зависимостей (DDG), входная точка graf.

  1. Построение RDDG.

Функции: построение редуцированного графа информационных зависимостей (RDDG), входная точка mssg.

Data dependencies graph builder consists of two main blocks:

Структура управления блока Data dependencies graph builder:

g raf mssg pord

Функция pord - входная точка блока Data dependencies graph analyser

5.4.1Построение DDG

Входная точка блока DDG constructor - функция graf. Общая структура управления функции graf приведена на следующей схеме.

g raf reassign strdep pre posl test

Функция reassign проверяет свойство однократного присваивания (single assignment): любая переменная может вычисляться в каждой точке области ее определения не более одного раза. Исходной информацией дл япроверки этого свойства служит Таблица Где-вычисляется’ (Where-compute table). Для каждой строки этой таблицы выполняются следующие действия.

Если строка соответствует переменной скалярного типа, то эта строка должна содержать ровно одну запись вида

statement number

name-domain

Если строка соответствует переменной, определенной на области, то осуществляется проверка пустоты пересечения всех <name-domains>, указанных в этой строке.

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

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

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

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