- •Калининградский государственный технический университет системное программное обеспечение (спо)
- •230101.65 «Вычислительные машины, комплексы, системы и сети». Часть I.
- •Лабораторная работа №1 Средства описания грамматик
- •Введение
- •Результат комментирования
- •Содержание отчета
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 Фиксация семантики программы
- •Введение
- •Исходный листинг
- •Содержание отчета
- •Содержание отчета
- •Содержание отчета
- •Содержание отчета
- •Выполнение лабораторной работы
- •Содержание отчета
- •Выполнение лабораторной работы
- •Содержание отчета
- •Контрольные вопросы
Содержание отчета
-
Исходное задание;
-
Три варианта описания грамматики.
Контрольные вопросы
-
Могут ли терминальные символы стоять в правой части пропозиции?
-
Могут ли нетерминальные символы стоять в левой части пропозиции?
-
Как в графическом представлении отображаются терминальные символы?
-
Сколько элементов включает формальное описание грамматики?
-
Как расшифровывается БНФ?
Лабораторная работа № 2 Фиксация семантики программы
Цель работы: изучение методов определения семантически корректных программ.
Введение
Каждый алгоритмически язык, кроме алфавита, лексики и синтаксиса, также включает семантику – раздел, определяющий значение предложений языка (их смысла).
Семантика – система правил истолкования отдельных языковых конструкций
Обычно семантика задается неформально. Предполагается, что предложение языка имеет смысл, если оно может быть переведено на другой язык. При этом таким языком может быть:
-
другой язык программирования;
-
описание на естественном языке (например, в виде комментариев);
-
представление алгоритма программы в виде блок-схемы;
-
выполнение данной программы на машине Тьюринга.
Именно такой перевод реализуется при трансляции, когда, в конечном итоге, программа с алгоритмического языка переводится сначала на некоторый промежуточный язык, а далее на машинный язык конкретной ЭВМ.
В данной лабораторной работе предполагается выявлять семантику путем комментирования заданного фрагмента программы на естественном языке.
Выполнение лабораторной работы
Разработать программу, раскрывающую семантику программного фрагмента, заданного вариантом в лабораторной работе № 1. Пример:
Исходный листинг
for i:=1 to 6 do
write (*’);
Результат комментирования
Выполняется цикл с заранее известным числом повторений с изменением значений переменной i от 1 до 6. В цикле печатается символ *.
Исходный фрагмент программы оформляется в виде текстового файла и подается на вход разработанного транслятора. Выход также формируется в виде текстового файла.
Исходный листинг может содержать комментарии в разрешенных синтаксисом местах, которые при определении семантики игнорируются.
Содержание отчета
-
Задание на выполнение лабораторной работы;
-
Укрупненная блок-схема транслятора;
-
Листинг программы.
Контрольные вопросы
-
В чем назначение семантики?
-
Можно ли формально определить семантику программы?
-
На каком этапе трансляции определяется семантика программы?
-
Как можно определить семантически корректную программу?
-
Влияет ли на семантику программы наличие комментариев в ней?
Лабораторная работа № 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 состояний.
