Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по СПО.doc
Скачиваний:
7
Добавлен:
30.10.2018
Размер:
370 Кб
Скачать
☆

Содержание отчета

  1. Исходное задание;

  2. Три варианта описания грамматики.

Контрольные вопросы

  1. Могут ли терминальные символы стоять в правой части пропозиции?

  2. Могут ли нетерминальные символы стоять в левой части пропозиции?

  3. Как в графическом представлении отображаются терминальные символы?

  4. Сколько элементов включает формальное описание грамматики?

  5. Как расшифровывается БНФ?

Лабораторная работа № 2 Фиксация семантики программы

Цель работы: изучение методов определения семантически корректных программ.

Введение

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

Семантика – система правил истолкования отдельных языковых конструкций

Обычно семантика задается неформально. Предполагается, что предложение языка имеет смысл, если оно может быть переведено на другой язык. При этом таким языком может быть:

  • другой язык программирования;

  • описание на естественном языке (например, в виде комментариев);

  • представление алгоритма программы в виде блок-схемы;

  • выполнение данной программы на машине Тьюринга.

Именно такой перевод реализуется при трансляции, когда, в конечном итоге, программа с алгоритмического языка переводится сначала на некоторый промежуточный язык, а далее на машинный язык конкретной ЭВМ.

В данной лабораторной работе предполагается выявлять семантику путем комментирования заданного фрагмента программы на естественном языке.

Выполнение лабораторной работы

Разработать программу, раскрывающую семантику программного фрагмента, заданного вариантом в лабораторной работе № 1. Пример:

Исходный листинг

for i:=1 to 6 do

write (*’);

Результат комментирования

Выполняется цикл с заранее известным числом повторений с изменением значений переменной i от 1 до 6. В цикле печатается символ *.

Исходный фрагмент программы оформляется в виде текстового файла и подается на вход разработанного транслятора. Выход также формируется в виде текстового файла.

Исходный листинг может содержать комментарии в разрешенных синтаксисом местах, которые при определении семантики игнорируются.

Содержание отчета

  1. Задание на выполнение лабораторной работы;

  2. Укрупненная блок-схема транслятора;

  3. Листинг программы.

Контрольные вопросы

  1. В чем назначение семантики?

  2. Можно ли формально определить семантику программы?

  3. На каком этапе трансляции определяется семантика программы?

  4. Как можно определить семантически корректную программу?

  5. Влияет ли на семантику программы наличие комментариев в ней?

Лабораторная работа № 3

Разработка автомата сканера

Цель работы: формирование практических навыков по синтезу детерминированных конечных автоматов, используемых в качестве основы работы лексических сканеров.

Введение

В общем виде конечный автомат (КА) они представляют пятерку:

M = (K, T, t, k1, F), где

К – конечное множество состояний автомата;

Т – конечный входной алфавит, т.е. множество допустимых входных символов;

t – переходная функция, преобразующая совокупность текущего состояния автомата и входного алфавита в состояние автомата на следующем шаге:

t: K * T  K.

k1 – начальное состояние КА;

F – непустое множество конечных состояний автомата: F  K, F  .

Очевидно, что КА удобно отображать в виде помеченного орграфа (рис. 3.1), узлы которого соответствуют состояниям КА. При этом выделяется начальный узел (вершина) со стрелкой и конечные в виде квадратов.

В семействе КА выделяют подсемейство детерминированных КА (ДКА), в которых нет вершин с одинаково помеченными дугами, уходящими в другие вершины. В дальнейшем рассматриваются только ДКА. Именно таким является и данный КА. Его описание может быть представлено в виде n-ки:

({A, B, C, D, E}, {a, b}, t, A, {D, E}).

K T k1 F

Функция переходов данного автомата задана табл. 3.1

Таблица 3.1

Текущее состояние

Вход

Следующее состояние

A

a

B

A

b

C

B

a

D

B

b

B

C

a

D

C

b

C

D

b

E

E

a

E

Выполнение лабораторной работы

1. Для программного фрагмента, заданного в соответствии с вариантом в лабораторной работе № 1, сформировать автомат распознавания входной цепочки символов, включающий:

  • алфавит автомата;

  • перечень возможных состояний;

  • перечень конечных состояний автомата;

  • граф автомата с разметкой дуг переходов;

  • таблицу переходов.

2. Программно реализовать данный автомат ввода символов, предполагающий:

  • ввод только корректных символов исходного алфавита

  • выдачу звукового сигнала при неправильном вводе символа;

  • вывод текущего состояния автомата.

Автомата должен включать не менее 10 состояний.