The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

5.9 Выводы

5.9 Выводы

Предыдущая  Содержание  Следующая V*D*V

Мы реализовали таблицу символов на основе функции binary() для поиска и вставки в отсортированный массив, содержащий структуры со значениями "имя" и "маркер". Наследование позволило нам добавлять в таблицу другие структуры не изменяя функции для поиска и вставки. Элегантность такого подхода становится очевидной, если рассмотреть традиционное определение таблицы символов элементов для наших целей:

 

struct {

    const char * name;

    int token;

    union {                    /* на базе значения маркера */

        double value;

        double (* funct) (double);

    } u;

};

 

Для ключевых слов union не требуется. Функции, определяемые пользователем, потребовали бы гораздо более сложного описания, а получение ссылок на части union является громоздкой операцией.

Наследование позволяет применить функциональные возможности таблицы символов к новым записям совершенно без изменения существующего кода. Динамическая компоновка помогает сохранить простоту реализации множеством способов: таблицы символов элементов для констант, переменных и функций могут быть связаны в дерево выражения без опасения, что они будут удалены по неосторожности; функция исполнения имеет дело только со своей компоновкой узлов.

 

Предыдущая  Содержание  Следующая