Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

otvety_na_ekzamen_koryagin

.doc
Скачиваний:
107
Добавлен:
14.03.2016
Размер:
131.58 Кб
Скачать
  1. Первый кусок

  1. Назначение трансляторов. Их роль при создании ПО

  1. Классификация

Компилятор – на входе: язык высокого уровня, на выходе: машинный код.

Интерпретатор – на входе: язык высокого уровня, на выходе: машинный код ( по операторно).

Перекодировщик – перевод с 1го языка высокого уровня на другой.

Ретранслятор - с низкого на язык высокого уровня.

  1. Аналитическая и генерирующая части

Аналитическая часть – поиск ошибок.(лексические и синтаксические , семантические)

Генерирующая часть - выдача результата.

  1. Многопроцессорные трансляторы

Параллельное выполнение нескольких процессов

  1. Второй кусок

  1. Лексический анализатор

Лексический анализатор - процесс аналитического разбора входной последовательности символов с целью получения на выходе другой последовательности символов (например, перевод сторки в число). При этом, группа символов входной последовательности, идентифицируемая на выходе процесса как последовательность допустимых символов (лексема), то есть в процессе лексического анализа производится распознавание и выделение лексем из входной последовательности символов.

  1. Вход и выход лексического анализатора. Анализирующая и генерирующая части

На входе – тексты на входном языке.

На выходе – лексем (последовательность допустимых символов).

Анализирующая часть – поиск ошибок.

Генерирующая часть – создание лексем.

  1. Лексические ошибки

Три вила ошибок:

Лексические – ошибки набивания текста.

Синтаксические – ошибки данного языка программирования.

Семантические – смысловые, ошибки в алгоритме.

Анализирующая часть:

Лексические ошибки – ошибки в словах.

Неверная буква.

Пропущена буква.

Лишняя буква.

Неправильно поставлены местами буквы.

Генерирующая часть:

В лексемах отсутствуют комментарии.

Лексемы одинаковой длины.

Лексемы несут числовую информацию.

  1. Третий кусок

  1. Синтаксический анализатор

Синтаксический анализатор – это процесс сопоставления линейной последовательности лексем языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево).

  1. Вход и выход синтаксического анализатора. Анализирующая и генерирующая части

На входе – лексемы.

На выходе – промежуточные таблицы.

Анализирующая часть – поиск ошибок.

Генерирующая часть – создание промежуточных таблиц.

  1. Синтаксический управляемый перевод. Свободная грамматика. Синтаксические ошибки

Синтаксический управляемый перевод – соответствие между записью в БНФ и ее графическим отображением.

Язык – “Begin” Множество Оператор “end”

Множество – множ…множ

Оператор – опер…опер

Язык – “Begin” Множ…множ Опер…опер “end”

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

Ограничение – то, что нельзя описать в форме БНФ, описывается в предикатной форме.

Синтаксические – ошибки данного языка программирования.

Третий кусок часть 2

  1. Восходящие и нисходящие распознаватели. Распознавание с возвратом и без возврата. Метод рекурсивного спуска.

Распознаватели – распознает поток информации.

Нисходящие распознаватели – сверху вниз по дереву разбора.

Восходящие распознаватели – снизу вверх по дереву разбора.

Нисходящие распознаватели более логичны.

Распознавание происходит слева направо.

Распознавание е с возвратом – идем по тексту программы, встречаем переменную, и возвращаемся в заголовок, чтобы определить переменную.

Распознавание без возврата – к заголовку программы создается таблица переменных. В процессе прохода по программе , когда встречается переменная, мы обращаемся к таблице.

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

  1. Многопрограммность- количество проходов по входному тексту. 1) Иду по входной строке, на выходе сразу же формирую выходную строку.2) Иду по входной строке – формирую лексемы, выбрасывая комментарии, или для начала выброшу комментарии, затем сформирую лексемы.

  1. Четвертый кусок

  1. Генератор кода. Назначение. Способы реализации. Вход и выход. Анализирующая и генерирующая части.

Назначение. Преобразованию кода из промежуточного представление в машинные инструкции — генератор кода обычно пытается оптимизировать создаваемый код теми или иными способами. Например, он может использовать более быстрые инструкции, использовать меньше инструкций, использовать имеющиеся регистры и предотвращать избыточные вычисления.

В компиляторах, использующих промежуточный язык, может быть две стадии выбора инструкций — одна для конвертирования дерева разбора в промежуточный код, а вторая — для преобразования промежуточного кода в инструкции целевой системы команд. Вторая стадия не требует обхода дерева: она может выполняться последовательно и обычно состоит из простой замены операций промежуточного языка соответствующим им кодами операций. На самом деле, если компилятор фактически является транслятором, то вторая стадия генерации кода может включать построение дерева из линейного промежуточного кода

На входе – промежуточные таблицы (подаётся дерево разбора или абстрактное синтаксическое дерево)

На выходе – текст на выходном языке.

Анализирующая часть отсутствует.

Генерирующая часть - линейная последовательность инструкций промежуточного языка.

Пятый кусок

  1. Четыре этапа создания ПО.

  1. Методы структурного программирования

Принципы:

    1. Писать больше комментариев.

    2. Не использовать goto.

    3. Использовать три различных блока:

а) Функция

б) Блок ветвления (if, then, else)

с) Цикл (for, while, return-until)

  1. Три этапа программирования. Отлаженный оператор. Графическое описание цикла.

Этапы программирования:

    1. Написание программы.

    2. Откладка.

    3. Тестирование

Отлаженный оператор – полностью рабочий оператор. Программист способен написать 5 отлаженных операторов в день.

Цикл с предусловием (0…∞)

Цикл с постусловием (1…∞).

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

Блок-схема

Pascal

Си

begin

{

End

}

Var

В любом месте

If условие then инструкция1 else инструкция2

If условие then инструкция1 else инструкция2

Procedure имя(), function имя()

Void имя() {}

For i=1 to n do

For {i=1;i=<n;i++}

While (условие) begin инструкция1 end

While(условие) {инструкция}

Return инструкция until (условие)

Do {инструкция} while (условие)

Writeln(“Hello”)

Cin>>”Hello”

  1. БНФ. Терминалы. Нетерминалы. Специальные символы. Приближение БНФ к программированию. Перевод БНФ в блок схемы. Однозначность в БНФ – два правила.

Форма Бекуса-Наура (БНФ) – формальная система описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ используется для описания контекстно-свободных формальных грамматик.

БНФ-конструкция определяет конечное число символов (нетерминалов). Кроме того, она определяет правила замены символа на какую-то последовательность букв (терминалов) и символов.

Перевод в блок-схемы (см. 3.3).

Однозначность БНФ:

    1. Все нетерминалы получаются путем выражения через терминалы.

    2. Все нетерминалы встречаются как слева, так и справа, кроме корней терминала.

  1. Шестой кусок

  1. Разбор арифметических выражений. Алгоритмы реализации функции.

  1. Алгоритм работы транслятора до первой ошибки.

      1. Сообщение об ошибке.

      2. Выход из программы и из объемлющих.

  1. Алгоритм, реализующий скобки в арифметических выражениях.

Cypma4

В формате печати выбрать 4 страницы на одном листе печатать с двух сторон

Шпоры лучше класть под листок

Сдавайте все вовремя и будет вам счастье

8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]