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

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

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

multidimensional-domain :

onedimensional-domain

[ name-multidimensional-domain : ] ( domain-product )

domain-product :

component-domain { ; component-domain }+

component-domain :

multidimensional-domain

name-unconditional-domain

Рекурсивно осуществляет разбор областей, входящих в domain-product и вызывает функцию onedim для обработки onedimensional-domain.

Информация об области записывается в Таблицу областей (Table of domains) функцией cokm, которая проверяет уникальность индексов в domain-product.

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

error code 12 'repeated index'<error context>

5.3.2.4Обработка описания новой области и диагональной области (Функция condm)

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

new-domain :

[ name-new-domain : ] new-domain-without-name

new-domain-without-name :

name-unconditional-domain / list-modification

modification :

name-index = value

name-onedimensional-domain { { +,- } boundary-function }+

boundary-function :

LEFT( const-expression )

RIGHT( const-expression )

declaration-of-diagonal-domain :

name-diagonal-domain : name-unconditional-domain / list-condition-on-index

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

c ondm inf listus con1 usl grank

mnoz alp1

uslnew

Функция inf выбирает информацию о корневой области name-unconditional-domain из Таблицы областей (Table of domains) (обработка new-domain и diagonal-domain ведется одинаково).

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

error code 409 ‘indefined domain’<error context>

Функция listus выделяет элементы list-modification или list-condition-on-index и заносит их в список list-condition.

Функция con1 анализирует результат работы функции inf: если корневая область не определена, обработка прекращается, иначе вызывается функция usl.

Функция usl анализирует тип условия в list-condition и вызывает функцию grank (обработка условий name-onedimensional-domain{{+,-}boundary-function}), либо функцию mnoz (см. 5.3.2.1) (обработка условий name-index = value), либо функцию uslnew (обработка условий condition-on-index).

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

error code 16 ‘incorrect conditional domain’<error context>.

Функция grank вызывает функцию wyc (см. 5.3.2.2) для вычисления значения const-expression из boundary-function, функцию graz для получения информации о name-onedimensional-domain, и функцию grana для получения модифицированной одномерной области.

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

error code 20 'incorrect name of domain '<error context>

error code 21 <error context>' is not one-dimensional domain'

error code 16 ‘incorrect conditional domain’<error context>

error code 22 'incorrect parameter '<error context>' of function LEFT or RIGHT'

error code 23 'negative boundary of range for index '<error context>

Функция uslnew строит Таблицу диагоналей (Table of diagonals) для declaration-of-diagonal-domain.

При этом для обработки list-condition-on-index используется функция zapu (см. п.5.3.2.6), для занесения информации о name-diagonal-domain в Таблицу диагоналей (Table of diagonals) используется функция con_2, информация о name-diagonal-domain для занесения в Таблицу областей (Table of domains) передается функции alp1.

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

error code 1 'constant '<error context>' in condition on index '<error context>

error code 2 'range for index '<error context>’consists from one point’

error code 3 <error context> ‘has not index’<error context>

error code 14 'domain with conditions on indexes '<error context>' and '<error context>' is empty'.

Функция alp1 записывает информацию о построенной в итоге области в Таблицу областей (Table of domains).

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

error code 18 'undefined subdomain '<error context>' in condition'.

error code 19 'undefined index '<error context>' in condition'.

5.3.2.5Обработка описаний переменных (Функция opisdef)

Осуществляет анализ и обработку описаний переменных, DISTRIBUTION INDEX, EXTERNAL. Синтаксис в языке Норма:.

declaration-of-scalar-variables :

VARIABLE list-name-scalar [ type ]

declaration-of-variables-on-domains :

VARIABLE list-name-variable-on-domain DEFINED ON name-unconditional-domain [ type ]

type :{ REAL, INTEGER, DOUBLE }

declaration-of-external-names :

declaration-of-external-functions

declaration-of-external-parts

declaration-of-external-functions :

EXTERNAL FUNCTION list-name-external-function [ type ]

declaration-of-external-parts :

EXTERNAL PART list-name-external-simple-part

declaration-of-distribution-indexes :

DISTRIBUTION INDEX name-index = simple-range , name-index = simple-range

simple-range : int-constant .. int-constant

Функция получает очередное предложение из группы c Cписка Норма предложений (List of Norma statements), вызывая функцию kbdef.

Результат работы функции opisdef - запись информации об именах переменных и внешних именах в Таблицу имен (Symbol table), информации Таблицу индексов распределения (Table of distribution indexes), либо запись информации об обнаруженных ошибках в Список ошибок (List of errors).

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

opissk

opisve

o pisdef rcodf

fcodf

ind_proc

Функции opisdef в зависимости от типа предлжония (declaration-of-scalar-variables, declaration-of-variables-on-domains, declaration-of-external-functions, declaration-of-external-parts, declaration-of-distribution-indexes) вызывает соответственно функции opissk, opisve, rcodf, fcodf, ind_proc.

Функции opissk выполняет анализ и обработку declaration-of-scalar-variables - заносит информацию о name-scalar в Таблицу имен (Symbol table).

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

error code 407 'incorrect list element of variables'<error context>

Функции opisve выполняет анализ и обработку declaration-of-variables-on-domains - заносит информацию о name-variable-on-domain в Таблицу имен (Symbol table).

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

error code 407 'incorrect list element of variables'<error context>

error code 412 'incorrect declaration of variable'<error context>’:undefined domain’

Функции rcodf выполняет анализ и обработку declaration-of-external-parts - заносит информацию о name-external-simple-part в Таблицу имен (Symbol table).

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

error code 170 'incorrect list element of external parts'<error context>

Функции fcodf выполняет анализ и обработку declaration-of-external-functions - заносит информацию о name-external-function в Таблицу имен (Symbol table).

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

error code 169 'incorrect list element of external functions'<error context>

Функции ind_proc выполняет анализ и обработку declaration-of-distribution-indexes - заполняет Таблицу индексов распределения (Table of distribution indexes).

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

error code 66 'incorrect distribution index:’ <error context>

error code 66 'incorrect distribution index:incorrect number’ <error context>

5.3.2.6Обработка описаний условной области (Функция opiska)

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

declaration-of-conditional-domain :

name-conditional domain , name-conditional-domain : name-domain / condition-on-domain

Функция получает очередное описание условной области из группы d Cписка Норма предложений (List of Norma statements) вызывая функцию kbc-domain.

Результат работы функции opiska - запись информации об области в Таблицу имен (Symbol table), Таблицу областей (Table of domains), Таблицу условий (Table of conditions) и Таблицу условных областей (Table of conditional domains), либо запись информации об обнаруженных ошибках в Список ошибок (List of errors).

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

o piska uslset zapu usls1 protes usls2

Функция uslset проверяет, определена ли корневая область name-domain.

Функция zapu записывает condition-on-domain в Таблицу условий (Table of conditions) и возвращает <reference in Table of conditions >.

Функция usls1 записывает строку

name-conditional domain

name-conditional-domain

name-domain

ref-on-condition

в Таблицу условных областей (Table of conditional domains).

Функция protes получает в качестве аргумента name-domain и выдает в качестве результата истинную корневую область (это name-domain, если name-domain безусловная область, либо результат рекурсивного поиска в Таблице условных областей (Table of conditional domains) безусловной корневой области).

Кроме этого, функция проверяет, не противоречивы ли условия для name-conditional domain в цепочке условий, возникающей в случае, когда name-domain - условная область. Принцип проверки заключается в следующем. Из Таблицы условных областей (Table of conditional domains) выбирается строка, в которую входит name-conditional domain. Из этой строки выбирается ref-on-condition и определяется признак ‘Y’ или ‘N’ в зависимости от истинности или ложности этого условия для name-conditional domain. Кроме этого, выбирается name-domain и для него процедура выделения условий и признаков повторяется до тех пор, пока очередная name-domain не будет безусловной. Если в полученной цепочке условий и признаков есть по крайней мере две одинаковых ref-on-condition с различными признаками, то это означает, что условия противоречивы, и, следовательно, область name-conditional domain пустая. В этом случае

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

error code 13 'domain’ <error context>’is empty’

Функция usls2 записывает информацию об обеих областях name-conditional domain в Таблицу имен (Symbol table) и Таблицу областей (Table of domains).

5.3.3Обработка предложений группы e (Функция kbbxo)

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

declaration-of-input :

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

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

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