- •Курсовой проект по СПО на тему: «Компилятор»
- •Компилятор – транслятор, осуществляющий перевод исходной программы в эквивалентную ей объектную программу на
- •Таблица идентификаторов – специальным образом организованные наборы данных, служащие для хранения информации об
- •Метод рехэширования с помощью произведения
- •Блок-схема добавления элемента в ТИ по методу рехэширования с помощью произведения
- •Блок-схема алгоритма поиска элемента в ТИ, организованной по методу рехэширования с помощью произведения
- •Метод организации ТИ простым списком
- •Блок-схема добавления элемента в ТИ по методу простого списка
- •Блок-схема алгоритма поиска элемента в ТИ, организованной с помощью метода простого списка
- •Результаты
- •Лексический анализатор
- •Граф конечного детерминированного автомата
- •Пример обработки текстового файла
- •Результаты обработки текстового файла (фрагмент)
- •Синтаксический анализатор
- •Контекстно-свободная грамматика в форме Бэкуса-Наура:
- •Множества крайних левых и крайних правых символов грамматики G .
- •Множества крайних левых и крайних правых терминальных символов грамматики G.
- •Остовная грамматика G’, полученная на основе исходной грамматики
- •Результаты работы синтаксического анализатора (фрагмент)
- •Заключение
Лексический анализатор
Лексический анализ – часть компилятора, которая читает литеры программы на исходном языке и строит из них слова – лексемы.
Граф переходов КА – направленный нагруженным однонаправленным граф, в котором вершины представляют состояния, дуги отображают переходы из одного состояния в другое, а символы нагрузки (метки) дуг соответствуют функции перехода.
Системное Программное Обеспе чение
Граф конечного детерминированного автомата
Системное Программное Обеспе чение
Пример обработки текстового файла
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
Системное Программное Обеспе чение
Результаты работы синтаксического анализатора (фрагмент)
Системное Программное Обеспе чение