> -- Илья Ермаков писал(а):
> Вот пример с активным синтаксическим деревом транслятора Рефала-0.

Если я правильно понял, то все это всего лишь "ручная" реалиазация диспетчеризации по динамическому типу аргумента. Т.е., если бы язык поддерживал вот такой полиморфизм:

## Код:
```
PROCEDURE HandleMsg(VAR msg: Structs.Message, VAR expr: Structs.Expr);
PROCEDURE HandleMsg(VAR msg: FuncNameMsg, VAR expr: Function);
```


То все стало бы еще намного проще, декларативенее и без всяких message busПоправьте, если я чего-то упустил.

P.S. Причем такое решение (без "активности" со стороны обрабатываемых елементов дерева) я считаю идеологически более чистым. Во всяком случае для этого примера.

P.S.S. Гуглить можно по фразе "двойная диспетчеризация".