Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бинарные деревья и задачи, связанные с ними.doc
Скачиваний:
3
Добавлен:
05.11.2018
Размер:
89.6 Кб
Скачать

Программа 5.20. Создание дерева синтаксического анализа.

Используя ту же стратегию, которая была задействована при оценке префиксных выражений, эта программа создает дерево синтаксического анализа из префиксного выражения. Для простоты предполагается, что операндами являются одиночные символы. Каждый вызов рекурсивной функции создает новый узел, передавая в него в качестве лексемы следующий символ из массива входных данных. Если лексема представляет собой операнд, программа возвращает новый узел, а если операция – то устанавливает левый и правый указатели на дерево, построенное (рекурсивно) для двух аргументов.

Char *a; int i;

Struct node

{

Item item; node *l, *r;

Node(Item x)

{

item = x; l = 0; r = 0;

}

};

typedef node* link;

link parse()

{

char t = a[i++]; link x = new node(t0;

if ((t = = ‘+’) || (t = = ‘*’))

{

x->1 = parse(); x->r = parse();

}

return x;

}