МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Кафедра 22
Пояснительная записка к
КУРСОВОЙ РАБОТЕ
на тему:
"Синтаксический анализ языка НОРМА. Разбор описаний "
студента группы К9-02а
Жучкова Александра Викторовича
Научный руководитель:
Комиссия:
Оценка:
Москва 1996г.
1. ВВЕДЕНИЕ
Задание, полученное мной на УИР и КП в данном семестре являлось продолжением групповой работы, начавшейся в предыдуших семестрах, и состояло в следующем:
изучить раздел описаний языковых конструкций Нормы;
разработать структуры данных и алгоритмы для разбора описаний языка программирования Норма, с учетом специфики языка, а так же удобства написания функций, необходимых для последующей работы транслятора;
написать функции разбора раздела описаний;
написать некоторые рабочие функции оперирующие с областями
2. Общее описание языка Норма
Язык программирования Норма является декларативным (непроцедурным) языком и предназначен для спецификации численных методов решения задач математической физики. Изначально он был ориентирован на решение задач математической физики разностными методами, однако может быть использован для решения более широкого класса вычислительных задач.
Главная идея, положенная в основу языка Норма, заключается в том, что полученные специалистом в процессе решения прикладной задачи расчетные формулы почти непосредственно используются для ввода в вычислительную систему и проведения счета. Таким образом, язык Норма дает прикладному математику возможность сформулировать свою задачу в привычных для него терминах. Запись на языке Норма - это, по существу, строгая запись численных методов решения математической задачи, запись еще не алгоритмов, а просто расчетных формул и остальной необходимой информации.
Отметим, что в записи на Норме не требуется никакой информации о порядке счета, способах организации вычислительных (циклических) процессов. Порядок предложений языка может быть произвольным - информационные взаимосвязи будут выявлены и учтены при организации процесса счета транслятором. Эта возможность, конечно, увеличивает трудоемкость и сложность при компиляции текста программы, но разработчики языка сознательно пошли на это, чтобы сделать данный язык удобным для использования широким кругом специалистов-математиков, имеющих небольшой опыт работы на компьютере.
Выбор уровня языка Норма определяет характерную его черту - в этом языке нет необходимости вводить такие понятия, как оператор присваивания и возможность переприсваивания значений (типа х:=х+1) и операторы перехода. Наличие таких понятий в традиционных языках программирования объясняется необходимостью формулировки конкретного алгоритма с учетом вопросов экономии и распределения памяти, порядка выполнения операторов и т. п. Побочный эффект в языке Норма отсутствует по определению. Понятно, что многие из этих вопросов появляются снова на этапе синтеза рабочей программы. Однако, здесь они решаются автоматически по строгим правилам, гарантирующим правильность синтезируемой программы.
Непроцедурность языка Норма позволяет преодолеть еще одну трудность, связанную с распараллеливанием алгоритма при счете на ЭВМ, допускающих совмещение операций. Известные методы распараллеливания последовательных алгоритмов основаны на выявлении, при некоторых ограничениях, частей алгоритма, которые можно выполнять независимо, в соответствии с заданным критерием параллелизма - асинхронные вычисления, синхронные и т. п. Однако, выявление взаимосвязей в уже сформированном последовательном алгоритме является неестественной и трудной задачей, так как анализируемая формулировка, как правило, насыщена избыточными взаимосвязями (типа введения рабочих переменных , конкретных способах организации циклов и т. п.). Вообще говоря, ни откуда не следует, что последовательный алгоритм надо транслировать в параллельный, а не определять параллельный сразу по непроцедурной записи.
Эти свойства, и некоторые другие ограничения, позволяют строго обосновать разрешимость синтеза выходной программы, так как в достаточно общей постановке решение этой задачи приводит к значительным математическим трудностям - она может оказаться NP-полной, либо вообще неразрешимой. С другой стороны, исследования, связанные с разработкой и применением языка Норма показывают, что имеющиеся ограничения приемлимы с практической точки зрения.
3 Структура транслятора с языка Норма.
Транслятор с языка Норма сразу проектировался как многопроходный. На первом проходе на вход лексического анализатора поступает текст исходной программы (см. приложение 1), который преобразуется в последовательности лексем, объединенные в кванты*. Параллельно происходит начальное заполнение таблиц имен и констант, после этого эти таблицы из хеш-структур преобразуются в массивы. Это делается для максимального освобождения оперативной памяти перед следующими проходами, а так же для ускорения доступа, так как далее идет очень интенсивное обращение к этим таблицам. На втором проходе происходит сортировка этих квантов по определенным правилам. Отсортированный список квантов поступает на следующем проходе на вход синтаксического анализатора, который разбирает описания языковых конструкций, операторы ввода, операторы вывода, операторы присваивания и т.д. В результате работы синаксического анализатора заполняются множество рабочих таблиц: областей, условий и т.п. На следующем проходе по данным таблицам происходит определение информационных зависимостей между операторами, определяется порядок вычисления. Далее для не сильно связанных компонентов методом нахождения гиперплоскостей происходит распараллеливание отдельных фрагметов программы. После чего генерируется выходная фортран-программа.
Для обеспечения доступа к верхней памяти, а также для возможного свопинга практически все операции с оперативной памятью осуществляются с использованием библиотеки функций менеджера памяти, написанной сотрудниками института прикладной математики.
... ресурсы вычислительной машины, а именно оперативную память, что зачастую правильно написанную программы невозможно оттранслировать из за нехватки оперативной памяти. Поэтому было решено перевести транслятор с языка программирования Норма на язык программирования Си, который был выбран по следующим причинам: - язык Си позволяет гораздо более эффективно использовать ресурсы вычислительной ...
... озвончения в середине слова после безударного гласного в словах французского происхождения. Зав. кафедрой -------------------------------------------------- Экзаменационный билет по предмету ИСТОРИЯ АНГЛИЙСКОГО ЯЗЫКА И ВВЕДЕНИЕ В СПЕЦФИЛОЛОГИЮ Билет № 12 Дайте лингвистическую характеристику "Младшей Эдды". Проанализируйте общественные условия национальной жизни Англии, ...
... В таком словаре для всех глаголов (около 20 тыс. в русском языке) должно быть указано, какими падежами и с какими предлогами производится это управление. Вершиной компьютерного анализа текста является автоматическое реферирование. Наличие семантической сети понятий, соединенных глаголами, позволяет сформулировать основные идеи текста документа, отраженные в часто встречающихся понятиях и связях, ...
... » по Образовательной системе «Школа 2100» // Начальная школа плюс До и После. – 2006. - № 4. 9. Купров В.Д. Словарная работа на уроках русского языка // Начальная школа. – 1990. - № 3. 10. Львов М.Р. и др. Методика обучения русскому языку в начальных классах. – М., 1987. 11. Методика грамматики и орфографии в начальных классах. / Под ред. Н.С.Рождественского. – М., 1975. Задание 2. Путем ...
0 комментариев