normDDr (1158429)

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

Текст из файла

82








Компилятор Норма

Детальный проект

Институт прикладной математики им.М.В.Келдыша

Российская Академия Наук

1999



Содержание

1. Предварительные сведения 4

2. Общая схема компилятора Норма 5

3. Основные структуры данных компилятора Норма. 7

3.1 Таблица имен (Symbol table) 7

3.2 Таблица констант (Constant table) 8

3.3 Список Норма-предложений (List of Norma statements) 8

3.4 Список итераций (List of iterations) 9

3.5 Таблица структуры итераций (Table of iterations structure) 11

3.6 Таблица соответствия предложения-строки (Statements-lines table) 13

3.7 Таблица последовательных групп (Table of ordered groups). 13

3.8 Список ошибок (List of errors) 14

3.9 Таблица областей (Table of domains) 14

3.9.1 Таблица диапазонов (Table of ranges) 15

3.9.2 Таблица условий (Table of conditions) 16

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

3.9.4 Таблица диагоналей (Table of diagonals) 17

3.10 Таблица упорядоченных индексов (Table of ordered indexes) 18

3.11 Таблица индексов распределения (Table of distribution indexes) 18

3.12 Таблица функциональных зависимостей (Table of functional dependencies) 19

3.12.1 Таблица ‘Что-вычисляется’ (What-compute table) 22

3.12.2 Таблица ‘Где-вычисляется’ (Where-compute table) 22

3.13 Таблица тел операторов (Table of operators body) 22

3.14 Таблица форматов ввода-вывода (Table of input-output formats) 23

3.15 Граф информационных зависимостей (Data dependencies graph (DDG)) 23

3.16 Редуцированныйграф информационных зависимостей (Reduced data dependencies graph

(RDDG)) 24

3.17 Список максимальных сильно связных подграфов (List of MSCS) 25

3.18 Список для представления параллельной ярусной схемы (List for parallel layer scheme

representation) 25

3.19 Таблица распределенных переменных (Table of distributed variables) 26

3.20 Таблица теневых переменных (Table of shadow variables) 26

3.21 Таблица удаленных переменных (Table of remote variables) 27

3.22 Промежуточное представление Fortran-DVM программы (Intermediate representation of

Fortran DVM programs) 27

3.23 Очередь входных переменных (Input variables queue) 30

4. Глобальная инициализация (Global initialization). 30

4.1 Инициализация глобальных счетчиков (функция count0) 30

4.2 Анализ опций трансляции (функция zaparg) 31

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

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

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

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

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

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

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

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

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

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

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

5.2.6 Определение типа предложения(Функция statement) 36

5.2.7 Обработка заголовка Норма-раздела(Функция head_of_part) 36

5.2.8 Обработка Норма-итерации(Функция lexitex) 37

5.2.9 Обработка Норма-предложения(Функция kbaht) 42

5.2.10 Остановка компиляции(Функция StopCompile) 43

5.2.11 Завершение лексического анализа(Функция EndLex) 43

5.3 Синтаксический анализ Норма-раздела (Part unit parser). 44

5.3.1 Обработка предложений группы а(Функция kvpar1) 44

5.3.2 Обработка предложений групп b,c,d(Функция kvop1) 45

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

5.3.4 Обработка предложений группы f (Функция kbbyx) 55

5.3.5 Обработка предложений группы g (Функция kvopr1) 56

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

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

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

5.4.2 Построение RDDG 70

5.5 Анализ графа информационных зависимостей (Data dependencies graph analyser). 72

5.6 Генерация внутреннего представления Fortran DVM программы (Fortran DVM intermediate

representation generator). 74

5.6.1 Реализация simple node(function begkf) 74

5.6.2 Реализация iteration node(function gen_iter) 77

5.6.3 Реализация MSCS node(function ms) 79

5.6.4 Реализация ordered group node(function mssv) 79

5.7 Генерация кода Fortran DVM программы (Fortran DVM code generator). 80

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

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

5.10 Завершение компиляции Норма-раздела (Exit part unit compilation). 86

6. Завершение компиляции (Exit from compilation) 87



1.Предварительные сведения

Рабочий проект компилятора Норма представляет собой детализацию эскизного проекта (документ “Компилятор Норма. Эскизный проект”). Приводится подробное описание структур данных компилятора и управляющей структуры компилятора и основных блоков компилятора, определенных в документе “Компилятор Норма. Эскизный проект”. В данном описании используются понятия из документа “Норма. Описание языка”.

Компилятор Норма транслирует Норма-программу из <исходного файла> в Fortran DVM программу, размещаемую в <выходном файле>. Компилятор Норма реализуется для кластера рабочих станций и функционирует под управлением ОС Unix.

Запуск компилятора осуществляется командой norma, которая имеет следующий формат: norma <опции> <исходный файл>

Компилятор Норма состоит из следующих блоков:

  1. Глобальная инициализация.

  2. Компилятор Норма-раздела.

а) Локальная инициализация.

  1. Лексический анализ Норма-раздела.

  2. Синтаксический анализ Норма-раздела.

  3. Построение графа информационных зависимостей.

  4. Анализ графа информационных зависимостей.

  5. Генерация внутреннего представления Fortran DVM программы.

  6. Генерация кода Fortran DVM программы.

  7. Анализ файлов ввода данных.

  8. Генерация листинга.

  9. Завершение компиляции Норма-раздела.

  1. Завершение компиляции.

Ниже приводится общая схема компилятора Норма, описание основных структур данных компилятора (определенных в документе “Компилятор Норма. Эскизный проект”), подробное описание отдельных блоков компилятора (основные функции, структуры данных и интерфейсы).

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

2.Общая схема компилятора Норма

Структура управления компилятора Норма приведена на Рис. 1.

Глобальная инициализация


Нет

Есть еще Норма-раздел?


Да

Локальная инициализация

Лексический анализ Норма-раздела

Синтаксический анализ Норма-раздела

Построение графа информационных зависимостей


Анализ графа информационных зависимостей

Генерация внутреннего представления Fortran DVM программы

Генерация кода Fortran DVM программы

Анализ файлов ввода данных


Завершение компиляции Норма-раздела

Завершение компиляции

Генерация листинга

Рис.1. Структура управления компилятора Норма

3.Основные структуры данных компилятора Норма.

В описании данного проекта используются следующие понятия, которым должно соответствовать понятие уникального номера: <statement number>, <iteration number>, <MSCS number>, <ordered-group-number>, <token code>.

Будем считать, что

a1< statement number< a2

b1 < identifier-token code < b2

a3< MSCS number < a4

b3 < identifier-token code < b4

a5< ordered-group-number < a6

a7< iteration number < a8

и при этом a1<a2<a3<a4<a5<a6<a7<a8, b1<b2<b3<b4. Из этого условия следует свойство уникальности. Значения параметров ai, bj определяются при реализации, в данном проекте для определенности будем считать, что a1=1, a2=499, a3=500, a4=549, a5=550, a6=599, a7=600, a8=650, b1=185, b2=9999, b3=10000.

3.1Таблица имен (Symbol table)

Таблица имен (Symbol table) предназначена для хранения идентификаторов Норма-программы и информации об этих идентификаторах. Идентификаторы Норма-программы заносятся в таблицу имен на этапе лексичексого анализа, информация об их свойствах - на этапе синтаксического анализа.

Строка Таблицы имен (Symbol table) имеет вид:

identifier

info

token-code

<info>::=

X

- PART name, MAIN PART name

AR

- FUNCTION name, REAL

AI

- FUNCTION name, INTEGER

AD

- FUNCTION name, DOUBLE

P<integer>

- DOMAIN PARAMETERS identifier =<integer>

M<indexes number><list indexes>

- domain

I

- domain index

II

- iteration index

VI<token-code>

- VARIABLE DEFINED ON domain

<token-code>, INTEGER

VR<token-code>

- VARIABLE DEFINED ON domain

<token-code>, REAL

VD<token-code>

- VARIABLE DEFINED ON domain

<token-code>, DOUBLE

SR

- VARIABLE, INTEGER

SI

- VARIABLE, REAL

SD

- VARIABLE, DOUBLE

ER

- EXTERNAL FUNCTION, REAL

EI

- EXTERNAL FUNCTION, INTEGER

ED

- EXTERNAL FUNCTION, DOUBLE

R

- EXTERNAL PART

F

- Standart Norma function

<token-code>::=<integer>

3.2Таблица констант (Constant table)

Таблицы констант (Constant table) предназначена для хранения констант Норма-программы и информации об этих константах. Константы и информация об их свойствах заносятся в таблицу констант на этапе лексичексого анализа.

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

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

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

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