Такт |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
Вход |
( |
x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
) |
) |
* |
* |
* |
* |
* |
) |
( |
( |
+ |
+ |
+ |
y |
u |
u |
Cост. |
0 |
4 |
5 |
4 |
3 |
4 |
2 |
4 |
9 |
7 |
9 |
12 |
0 |
3 |
0 |
2 |
8 |
2 |
0 |
1 |
7 |
5 |
7 |
||
Опер. |
S(4) |
S(5) |
R(1,2) |
G(3) |
R(1,1) |
G(2) |
R(1,0) |
G(9) |
S(7) |
S(12) |
R(3,2) |
G(3) |
R(1,1) |
G(2) |
S(8) |
R(1,0) |
G(1) |
S(7) |
S(5) |
R(1,2) |
|||||
Стек |
0 |
4 |
5 |
4 |
3 |
4 |
2 |
4 |
9 |
7 |
9 |
12 |
0 |
3 |
0 |
2 |
8 |
2 |
0 |
1 |
7 |
5 |
7 |
||
0 |
4 |
0 |
4 |
0 |
4 |
0 |
4 |
9 |
4 |
9 |
0 |
0 |
2 |
0 |
0 |
1 |
7 |
1 |
|||||||
0 |
0 |
0 |
0 |
4 |
0 |
4 |
0 |
0 |
1 |
0 |
|||||||||||||||
0 |
0 |
0 |
Включение в грамматику «правил для типичных ошибок»
Включение специальных символов в грамматику:
G={ At , An , As , S, P }
Например:
F: "(" S ")"
F : "(" S error
F : S ")" error
Включение действий для обработки типичных ошибок в грамматику:
F: "(" S")"
F: "("S {error_message(“Ожидается закрывающая скобка.”);stop_convert();}
F : S {error_message(“Отсутствует парная открывающая скобка.”);stop_convert();} ")"
Синтаксический анализ
Преобразование входного текста в постфиксную форму записи
a=b*c+d; => abc * d + =
Синтаксическое дерево Дерево грамматического разбора
Из дерева грамматического разбора можно получить синтаксическое дерево.
1. Удалить все листья, не являющиеся знаками операций и наименованиями операндов.
2. Обойти дерево, начиная с корня (корень, левое поддерево, правое поддерево); если у текущего корня есть лист – знак операции, то этот знак перенести в корень, лист удалить.
3. Обойти дерево и, если у листа есть родительский узел, помеченный нетерминалом, то пометку листа перенести в родительский узел, лист удалить.
Рекурсивный обход синтаксического дерева:
1. Взять корень.
2. Обойти левое поддерево.
3. Обойти правое поддерево.
4. Выдать содержимое корня.
позволяет получить постфиксную запись.
Вначале формулируем, как исходная запись (скобочных арифметических выражений) должна будет выглядеть в постфиксной форме:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.