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

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

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

Кроме этого, проводится дополнительная обработка для function calls.

1) Для call-reduction-function заносится информация в дополнительную таблицу summa, строка которой имеет вид

statement number

name-reduction-domain

Arithm-expression, к которому применяется reduction-function, передается на обработку функции b (см. п. ). При этом в стек mom заносится name-reduction-domain.

2) Для call-external-function заносится информация в дополнительную таблицу funpol, строка которой имеет вид

statement number

name-external function

и дополнительную таблицу exter, строка которой имеет вид

name-external function

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

error code 74 'incorrect scalar expressiion'<error context>

error code 315 'incorrect index of variable'<error context>

error code 317 'incorrect index of scalar'<error context>

error code 5 'value of variable'<error context>’is not in declaration domain’

error code 55 'iteration index'<error context> of variable'<error context>’has false displacement’

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

Функция dopkdc заносит информацию об операторе в Таблицу Что-вычисляется’ (What-compute table).

Функция dopgdc заносит информацию об операторе в Таблицу Где-вычисляется’ (Where-compute table).

5.3.5.2Функция opv6 - обработка operator-ASSUME

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

operator-ASSUME

FOR domain ASSUME relation { ; relation }*

relation :

name-variable-on-domain = arithm-expression

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

doprg


o pv6 mnoz doplef a b opv1 zapf

dopkdc dopgdc

Функция mnoz (см. п. 5.3.2.1) обрабатывает область оператора. Если при этом обнаружены ошибки, обработка оператора прекращается, иначе token code области оператора заносится в стек mom.

Функция doplef (см. п. 5.3.3) осуществляет проверяет допустимости переменной в левой части -operator-ASSUME.

Остальные функции обрабатывают правую часть scalar--ASSUME.

Функция a (см. п. 5.3.5.1) строит польскую запись для арифметического выражения правой части оператора.

Функция b осуществляет проверку допустимости термов арифметического выражения, представленного в польской записи. Термами могут быть scalars, arithmetical constants, domain’s parameters, indexes, function calls, variables on domain. Для термов этих типов формируется строка для записи в Таблицу функциональных зависимостей (Table of functional dependencies). Функция b аналогична функция b1 (см. п. 5.3.5.1), за исключением дополнительной обработки для терма variable on domain. Эта обработка выполняется функцией doprg.

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

error code 75 'incorrect expression'<error context>

error code 73 'value of index '<error context>' undefined'

Функция doprg проверяет правильность использования variable on domain в operator-ASSUME. Для этого проверяются три условия:

1) индексы в индексных выражениях переменной должны соответствовать индексам области определения переменной,

2) индексы в индексных выражениях переменной должны соответствовать индексам области оператора,

3) область need-domain для переменной должна входить в область определения величины.

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

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

error code 71 'incorrect expression'<error context>

error code 311 'incorrect value of index'<error context>

error code 312 'incorrect index of variable' <error context>': '<error context>' is not integer constant’

error code 313 'incorrect index of variable' <error context>': '<error context>' is not index’

error code 314 'incorrect index of variable' <error context>': there is not sign before constant expression'

error code 315 'incorrect index of variable'<error context>

error code 316 'incorrect index of variable'<error context>': '<error context>' <0’

error code 317 'incorrect index of scalar'<error context>

error code 319 'incorrect index '<error context>' of variable '<error context> ': in ITERATION ON '

Функция opv1 обрабатывает область в случае, если эта область является conditional-domain. Из Таблицы условий (Table of conditions) выбирается логическое условие и обрабатывается функциями a и b. Информация о термах логического условия также включается в Таблицу функциональных зависимостей (Table of functional dependencies) для анализируемого оператора функцией zapf.

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

Функция dopkdc заносит информацию об операторе в Таблицу Что-вычисляется’ (What-compute table).

Функция dopgdc заносит информацию об операторе в Таблицу Где-вычисляется’ (Where-compute table).

5.3.5.3Функция kvo2 - обработка call-part

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

call-part :

COMPUTE name-part [ ( actual-parameters )]

actual-parameters :

[ list-in-parameter ] [ RESULT list-out-parameter ]

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

k vo2 mnoz kvoc paramt obrraz zapf


dopkdc dopgdc

Функция mnoz (см. п. 5.3.2.1) обрабатывает область оператора. Если при этом обнаружены ошибки, обработка оператора прекращается, иначе token code области оператора заносится в стек mom. При обработке call-part, не входящего в operator-ASSUME, функция mnoz не вызывается и стек mom пуст.

Функция kvoc анализирует actual-parameters и вызывает функцию paramt для обработки list-in-parameter и (или) list-out-parameter, устанавливая в первом случае признаки inout =’R’, env=’O’, во втором случае - inout =’L’, env=’O’.

Функция paramt является универсальной функцией для обработки list-parameter и дополнительно в качестве аргумента она получает признак inout (для list-in-parameter inout =’R’, для list-out-parameter inout =’L’), и признак env (тип окружения вызова: env =’O’ для call-part, заданного вне конструкции iteration, env =’B’ для call-part заданного в boundary-value конструкции iteration, env =’H’ для call-part заданного в initial-value конструкции iteration, env =’P’ для call-part заданного в body-of-iteration.

Функция выделяет очередной параметр из list-parameter и, в зависимости от типа параметра, вызывает соответствующую функцию (функции) обработки параметра:

in-parameter : function

arithm-expression b a

name-variable-on-domain ON domain-of -parameter espis3,espis4

iterated-variable-on-domain ON domain-of-parameter espis7,espis8

name-external-simple-part espis1

name-external-function espis1

out-parameter :

name-scalar espis2

name-variable-on-domain ON domain-of-parameter espis3,espis4

iterated-variable-on-domain ON domain-of-parameter espis7,espis8

iterated-scalar espis5

Эти функции осуществляет проверку допустимости параметров call-part и строят зависимости param-dependency, необходимые для занесения в Таблицу функциональных зависимостей (Table of functional dependencies). Кроме этого, для out-parameter:

функция dopkdc заносит информацию о параметре в Таблицу Что-вычисляется’ (What-compute table), задавая значение <statement number> равным значению верха стека nom,

функция dopgdc заносит информацию о параметре в Таблицу Где-вычисляется’ (Where-compute table) ), задавая значение <statement number> равным значению верха стека nom.

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

error code 212 'incorrect parameter-result of part '<error context>

error code 213 'missed parameter of part'

error code 214 'incorrect parameter of part: '<error context>' is not declared or declared twice’'

error code 216 'incorrect parameter-result of part '<error context> ': computation on precede (-1) step of ITERATION'

error code 217 'incorrect parameter-result of part : reassignment '<error context>

error code 218 'incorrect parameter of part : incorrect variable'<error context>

error code 219 'incorrect parameter of part : domain'<error context>' is conditional’'

error code 220 'incorrect parameter-result of part :’ <error context>' is not iterated'’

error code 222 'incorrect parameter of part : domain of parameter'<error context>' is not in declaration domain’'

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

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

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