Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые проекты / курса не мои / Юджен / ПЗ по СПО / пояснительная записка.doc
Скачиваний:
33
Добавлен:
02.05.2014
Размер:
546.3 Кб
Скачать

2.3 Схема распознавателя

Распознаватель – это специальный алгоритм, который позволяет определить принадлежность цепочки символов заданному языку.

Схема распознавателя представлена на рисунке 2:

Рис.6 Схема распознавателя

Во входном языке константы заданы в шестнадцатеричной форме. Шестнадцатеричная константа должна содержать цифры и буквы от A до F (будем рассматривать только прописные буквы). Имена идентификаторов должны содержать только английские буквы и цифры.

Грамматика входного языка в форме Бэкуса-Наура:

^ – знак пробела.

Для удобства введем дополнительные обозначения:

x1 – все символы

x2 – все симв. кроме ^

x3 – все симв. кроме 0..9

x4 – все симв. кроме }

x5 – все симв. кроме A..F,0..9,^

x6 – все симв. кроме a..z, 0..9,^

x7 – все симв. кроме a..z, 0..9

x8 – символы a..g, i..z, 0..9

x9 – символы a..d, f..z, 0..9

x10 – символы a..e, g..z, 0..9

x11 – символы a..q, s..z, 0..9

x12 – символы a..n, p..z, 0..9

x13 – символы a..f, h..z, 0..9

x14 – символы a..k, m, o..z, 0..9

x15 – символы a..c, e..z, 0..9

x16 – символы a..h, j..z, 0..9

x17 – символы a..r, t..z, 0..9

x18 – символы a..k, m..z, 0..9

x19 – символы a..s, u..z, 0..9

x20 – символы a..m, o..z, 0..9

x21 – все симв. кроме =

x22 – все симв. кроме ^, h

x23 – символы a..z, 0..9

x24 – символы 0..9, A..F

x25 – символы 1..9, A..F

x26 – символы 0..9

x27 – символы 1..9

x28 – все симв. кроме a..z, 0..9, ∙

x29 – символы a..c, e..h, j..z, 0..9

G ( {0..9, a..z, A..F, ;, <, >, +, -, (, ), :, =, ^ }, { S, E, H F1, F2 B1, B2, B3, OR, OR1, IR, IR1, IR2, NR, NR1, NR2, T, I, P1, P2, Z, C, D, DO, DO1, WH, WH1, WH2, WH3, WH4, BE, BE1, BE2, BE3, BE4, EN, EN1, EN2, EN3, EN4, EN5, PR, PR1, PR2, PR3, IF, IF1, TH, TH1, EL1, EL2, EL3, SH, SH1, KO}, P, S )

P:

S®^|B1^|B2^|B3^|KO^|T^|F1^|F2^|P2^|Z^|IR^|IR1^|IR2^|IN^| IN1^|IN2^|I^|ORx6|OR^|WH^|WH1^|WH2^|WH3^|WH4^|DO^|DO1^| BE^|BE1^|BE2^|BE3^|BE4^|PR^|PR1^|PR2^|PR3^|EN^|EN1^|EN2^|EN3^|EN4^|EN5^|EL1^|EL2|EL3^|TH^|TH1^|TH2^|TH3^|IF^|IF1^|

T® ;

F1® )

F2® (

Z® +|-|*|/

KO® {

B1® <

B2® >

B3® =

IR® a

IR1® IRn

IR2® IR1d

IN® n

IN1® INo

IN2® IN1t

OR® o

OR1® ORr

C® x27|Cx26

D® 0

SH® Dh

SH1® SHx25|SH1x24

DO® d

DO1® DOo

WH® w

WH1® WHh

WH2® WH1i

WH3® WH2l

WH4® WH3e

PR® p

PR1® PRr

PR2® PR1o

PR3® PR2g

BE® b

BE1® BEe

BE2® BE1g

BE3® BE2i

BE4® BE3n

EN® e

EN1® n

EN2® EN1d

EN3® EN2

EN4® EN2i

EN5® EN4f

EL1®ENl

EL2® EL1s

EL3®EL2e

IF® i

IF1® IFf

TH® t

TH1® THh

TH2®TH1e

TH3®TH2n

I®IRx20|IR1x15|IR2x23|INx12|IN1x19|IN2x23|Ix23|ORx11|OR1x23| WHx8|WH1x16|WH2x18|WH3x9|WH4x23|DOx12|DO1x23|BEx9|BE1x13| BE2x16|BE2x16|BE3x20|BE4x23|PRx11|PR1x12|PR2x13|PR3x23|ENx14| EN1x15|EN2x29|EN4x10|EN5x23|EL1x17|EL2x9|EL3x23|THx8|TH1x9|TH2x20| TH3x23|IFx10|IF1x23

Конечный детерминированный автомат M’({S, E, H F1, F2 B1, B2, B3, OR, OR1, IR, IR1, IR2, NR, NR1, NR2, T, I, P1, P2, Z, C, D, DO, DO1, WH, WH1, WH2, WH3, WH4, BE, BE1, BE2, BE3, BE4, EN, EN1, EN2, EN3, EN4, EN5, PR, PR1, PR2, PR3, IF, IF1, TH, TH1, EL1, EL2, EL3, SH, SH1, KO},{0..9, a..z, A.F, ;, <, >, +, -, *, /, (, ), :, =, ^ },d,H,{S}), который распознает язык, заданный этой грамматикой, представлен приложении Б. Начальным состоянием автомата является состояние H, конечным S. Поскольку КА работает с непрерывным потомком лексем, перейдя в конечное состояние, он тут же должен возвращаться в начальное, чтобы распознавать очередную лексему. Поэтому в моделируемой программе эти два состояния объединяются. В автомат введено особое состояние E, обозначающее состояние «ошибка». В это состояние КА переходит всегда, когда получает на вход символ, по которому нет переходов из текущего состояния.

Соседние файлы в папке ПЗ по СПО