Уфимский Государственный Авиационный Технический Университет
кафедра ТК
Лабораторная работа №3
Построение простейшего дерева вывода
Выполнил
студент гр. T28-421
Проверил
ассистент кафедры ТК
Пузырникова Е.А.
Уфа 2006
Задание
Цель работы: изучение основных понятий теории грамматик простого и операторного предшествования, ознакомление с алгоритмами синтаксического анализа (разбора) для некоторых классов КС-грамматик, получение практических навыков создания простейшего синтаксического анализатора для заданной грамматики операторного предшествования.
Для выполнения лабораторной работы требуется написать программу, которая выполняет лексический анализ входного текста в соответствии с заданием, порождает таблицу лексем и выполняет синтаксический разбор текста по заданной грамматике с построением дерева разбора. Текст на входном языке задается в виде символьного (текстового) файла. Допускается исходить из условия, что текст содержат не более одного предложения входного языка. Программа должна выдавать сообщения о наличие во входном тексте ошибок.
S®a:=F;
F®F+T|TT®T*E|T/E|EE® (F)|-(F)|a
№ варианта |
№ варианта грамматики |
Допустимые лексемы входного языка |
9 |
1 |
Идентификаторы, шестнадцатеричные числа |
Множества левых и правых символов
|
L(U) |
R(U) |
S |
a |
; |
F |
F, T |
T |
T |
T, E |
E |
E |
(, – , a |
), a |
|
L(U) |
R(U) |
S |
a |
; |
F |
F, T, E |
T, E |
T |
T, E, (, –, a |
E, ), a |
E |
(, – , a |
), a |
|
L(U) |
R(U) |
S |
a |
; |
F |
F, T, E, (, –, a |
T, E, ), a |
T |
T, E, (, –, a |
E, ), a |
E |
(, – , a |
), a |
|
Lt (U) |
Rt (U) |
S |
a |
; |
F |
+ |
+ |
T |
*, / |
*, / |
E |
(, – , a |
), a |
|
Lt (U) |
Rt (U) |
S |
a |
; |
F |
+, *, /, (, -, a |
+,*, /, ), a |
T |
*, /, (, -, a |
*, /, ), a |
E |
(, – , a |
), a |
Множества левых и правых терминальных символов для грамматики
Матрица операторного предшествования
|
a |
:= |
; |
+ |
* |
/ |
( |
) |
- |
⊥к |
a |
|
=. |
.> |
.> |
.> |
.> |
|
.> |
|
|
:= |
<. |
|
=. |
<. |
<. |
<. |
<. |
|
<. |
|
; |
|
|
|
|
|
|
|
|
|
<. |
+ |
<. |
|
.> |
.> |
<. |
<. |
<. |
.> |
<. |
|
* |
<. |
|
.> |
.> |
<. |
.> |
<. |
.> |
<. |
|
/ |
<. |
|
.> |
.> |
<. |
.> |
<. |
.> |
<. |
|
( |
<. |
|
|
<. |
<. |
<. |
<. |
=. |
<. |
|
) |
|
|
.> |
.> |
.> |
.> |
|
.> |
|
|
- |
|
|
|
|
|
|
=. |
|
|
|
⊥н |
<. |
|
|
|
|
|
|
|
|
|