Описание реализации T-Refal'а - Refal'а на OpenTS. Представление данных (trefal.hh)Expr - Рефал-выражение. Представлено массивом Term'ов:class Expr : private ts::TExtData { bool is_const; Term* terms; ... } В Expr определены все операции с выражениями: взятие подвыражение, конкатенация и прочее. Term - Рефал-терм. Может быть символом, числом или выражением (в скобках): struct Term { enum Type { CHAR, INT, EXPR, CONST } type; int data; TExpr e; ... } TExpr - T-ссылка на Expr. Т.е. указатель на выражение, которое может находится на другом узле. При приведении TExpr и Expr происходит передача Expr с узла на узел. class TExpr : public ts::TVar<Expr> { ... Компиляция функций в T-RefalКомпиляция происходит стандартным образом (как и в C++ или Java), только приходится преобразовывать Expr в TExpr и обратно. Пример. |