Скачиваний:
28
Добавлен:
02.05.2014
Размер:
530.94 Кб
Скачать

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

Лексический анализ – часть компилятора, которая читает литеры программы на исходном языке и строит из них слова – лексемы.

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

Системное Программное Обеспе чение

Граф конечного детерминированного автомата

Системное Программное Обеспе чение

Пример обработки текстового файла

prog

repeat

{начало цикла}

 

begin

 

 

 

if ((Cnt>-1)and(Result>0)) then

 

begin

 

 

Cnt--;

 

 

Result:=5-Cnt;

 

 

end

 

 

else

 

 

Cnt:=Result;

 

 

Var4:=-Cnt;

 

 

Sum:=Cnt+Result+Var4;

 

end

 

 

until((Sum=25)xor(Result>10));

{конец цикла}

end.

Системное Программное Обеспе чение

Результаты обработки текстового файла (фрагмент)

Системное Программное Обеспе чение

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

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

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

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

Системное Программное Обеспе чение

Контекстно-свободная грамматика в форме Бэкуса-Наура:

G({prog, end., if, then, else, begin, end, repeat, until, or, xor, and, not, <, >, =, (, ), –, +, um, dec, a, c, ;, :=}, {S, L, O, R, B, C, D, E, I, T, F}, P, S)

правила P:

S prog L end.

L O | L ; O | L ;

O if B then R else O | if B then O | begin L end | repeat O until B | a := E R if B then R else R | begin L end | repeat O until B | a := E

B B or C | B xor C | C C C and D | D

D E < E | E > E | E = E | ( B ) | not ( B )

E E I | E + T | T I → ( um I ) | F

T um T | F

F → ( E ) | a | c | a dec

Системное Программное Обеспе чение

Множества крайних левых и крайних правых символов грамматики G .

 

 

Результат

 

L(U)

R(U)

S

prog

end.

L

O, L, if, begin, repeat, a

O, B, C, D, E, I, T, F, ;, end, ), a, c, dec

O

if, begin, repeat, a

O, B, C, D, E, I, T, F, end, ), a, c, dec

R

if, begin, repeat, a

R, B, C, D, E, I, T, F, end, ), a, c, dec

B

B, C, D, E, T, F, (, not, um, a, c

C, D, E, I, T, F, ), a, c, dec

C

C, D, E, T, F, (, not, um, a, c

D, E, I, T, F, ), a, c, dec

D

E, T, F, (, not, um, a, c

E, I, T, F, ), a, c, dec

E

E, T, F, (, um, a, c

I, T, F, ), a, c, dec

I

F, (, a, c

F, ), a, c, dec

T

F, um, (, a, c

T, F, ), a, c, dec

F

(, a, c

), a, c, dec

Системное Программное Обеспе чение

Множества крайних левых и крайних правых терминальных символов грамматики G.

 

L(U)

S

prog

L

;, if, begin, repeat, a

O

if, begin, repeat, a

R

if, begin, repeat, a

B

or, xor, and, <, >, =, (, not, -, +, um, a, c

C

and, <, >, =, (, not, -, +, um, a, c

D

<, >, =, (, not, -, +, um, a, c

E

-, +, (, um, a, c

I

(, a, c

T

um, (, a, c

F

(, a, c

Результат

R(U)

end.

;, else, then, end, until, :=, or, xor, and, <, >, =, ), -, +, um, a, c, dec

else, then, end, until, :=, or, xor, and, <, >, =, ), -, +, um, a, c, dec

else, end, until, :=, or, xor, and, <, >, =, ), -, +, um, a, c, dec

or, xor, and, <, >, =, ), -, +, um, a, c, dec and, <, >, =, ), -, +, um, a, c, dec

<, >, =, ), -, +, um, a, c, dec ), -, +, um, a, c, dec

), a, c, dec um, ), a, c, dec ), a, c, dec

Системное Программное Обеспе чение

Остовная грамматика G’, полученная на основе исходной грамматики

G’({prog, end., if, then, else, begin, end, repeat, until, or, xor, and, not, <, >, =, (, ), –, +, um, dec, a, c, ;, :=}, {E, B}, P’, E)

правила P’:

E prog E end. – правило № 1

E E | E ; E | E ; – правила № 2 – 4

E if B then E else E | if B then E | begin E end | repeat E until B | a := E

правила № 5 – 9

E if B then E else E | begin E end | repeat E until B | a := E

– правила № 10 – 13

B B or B | B xor B | B – правила № 14 – 16 B B and B | B – правила № 17 и 18

B E < E | E > E | E = E | ( B ) | not ( B ) – правила № 19 – 23 E E I | E + E | E – правила № 24 – 26

E → ( um E ) | E – правила № 27 и 28

E um E | E – правила № 29 и 30

E → ( E ) | a | c | a dec – правила № 31 – 34

Системное Программное Обеспе чение

Результаты работы синтаксического анализатора (фрагмент)

Системное Программное Обеспе чение

Соседние файлы в папке Курсовая СПО