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.10 Упражнения

5.10 Упражнения

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

Для реализации всего, подобного циклам while или repeat, операторов if и так далее, необходимы новые ключевые слова. Распознавание выполняется в stmt(), но это по большей части только проблема построения компилятора, а не наследования. После определения типа операции, мы будем создавать типы узлов, подобные While, Repeat, или IfElse, а ключевым словам в таблице символов нет необходимости знать об их существовании.

Немного более интересными являются функции с двумя аргументами, подобные atan2() математической библиотеки ANSI-C. С точки зрения таблицы символов, такие функции обрабатываются подобно простым функциям, но и для дерева выражений нам надо изобрести новый тип узла с тремя потомками.

Пользовательские функции представляют собой очень интересную задачу. Это не так уж сложно, если мы представляем один параметр как $ и используем тип узла Parm чтобы указать обратно на функцию записи в таблице символов, где можно временно хранить значение аргумента до тех пор, пока мы не разрешим рекурсию. Функции с именованными параметрами и несколькими параметрами, конечно, более трудны. Тем не менее, это хорошее упражнение для исследования преимуществ наследования и динамической компоновки. Мы вернемся к этой проблеме в главе 11.

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