Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_dm.doc
Скачиваний:
31
Добавлен:
08.11.2018
Размер:
11.89 Mб
Скачать
    1. Контрольная распечатка.

Введите строку символов 221b2

Данная строка не принадлежит языку

Введите строку символов 221b221b221b

Данная строка принадлежит языку

Введите строку символов b21

Данная строка принадлежит языку

Введите строку символов b21b21

Данная строка принадлежит языку

Введите строку символов 22222222

Данная строка принадлежит языку

Ведите строку символов 221b221bb21b21b212222

Данная строка принадлежит языку

Введите строку символов 211b

Данная строка не принадлежит языку

Введите строку символов

Данная строка принадлежит языку

    1. Замечания.

1. Синтаксический анализатор "grammatika" реализован исходя из ви­да детерминированного конечного автомата. Этот же самый анализатор может иметь множество других программных реализаций, как-то:

a) в качестве основы может быть взята грамматика;

b) могут использоваться различные программные конструкции языков программирования и другие причины.

2. Синтаксический анализатор может быть реализован на любом, доступном студенту, алгоритмическом языке: PL, Си, TURBO Pascal, ассемблер, BASIC и других. Нельзя на PHP, PERL.

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

Пусть задано регулярное выражение (cc) (ba10)* (0а)*, т. е. имеется язык:

L75 = {(cc)m (balO)n (Oa)p : m, n, p > 0}.

Один из вариантов синтаксического анализатора на языке ассемблера имеет следующий вид.

TITLE (cc)* (bа10)*(0а)* code segment

assume cs:code, ds:code

org l00h begin: JMP MAIN

;------------------------------------------------------

clf egu OAh, ODh

OKMSG db clf, 'O-K TESTED ! $'

ERMSG db clf, 07h, 'Invalid simvol !', '$'

WMSG db clf, 'Press the ENTER for exit!', '$'

;————————————————

MAIN proc

S: call GCHR

cmp al, Odh

jeOK

cmp al,'c'

jeT

cmp al, 'b'

jeV

cmp al, '0'

jeY

jmpNO T:

T: call GCHR

cmp al, 'c'

jeS jmpNO

V: call GCHR cmp al, 'a' jeW jmpNO

W:call GCHR cmp al, ' 1' jeX jmpNO

X: call GCHR

cmp al, '0'

je U

jmp NO

U: call GCHR

cmp al, 'b'

je V

cmp al, '0'

je Y

cmp al, Odh

je OK

jmp NO

Y: call GCHR

cmp al, 'a'

je Z

jmp NO

Z: call GCHR

cmp al,'0'

je Y

cmp al, Odh

je OK

NO: lea dx, ERMSG

mov ah, 09h

Int 21h

call WAI

ret

OK: lea dx, OKMSG

mov ah, 09h

Int 21h

call WAI

ret

MAIN endp

;------------------------------------------------------

GCHR proc

mov ah, Olh

Int21h

Ret

GCHR endp

;--------------------------------------------------------------------

WAI proc

lea dx, WMSG

mov ah, 09h

Int 21h

call GCHR

cmp al, Odh

jne WT

ret WAI endp

;------------------------------------------------------

code ends

end begin ; IT WORKS !

синтаксического анализатора (на любом из реализованных на компьютерной технике.

    1. Отчет по практической работе.

Отчет оформляется в соответствии с требованиями, предъявляемыми к оформлению лабораторных работ в вузе, и должен содержать:

  1. Титульный лист.

  2. Наименование и цель работы.

  3. Исходные данные варианта задания.

  4. Алгоритм решения задачи (граф, таблица переходов).

  5. Листинг программы с исходными и выходными данными (листинг программы).

  6. Анализ результатов (контрольная распечатка).

  7. Выводы.

Замечание: листы отчета должны быть скреплены.

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