====== Context ====== Используемые в программе выражения могут содержать в себе ссылки на //Сущности// (//Entities//). Первое разделение сущностей: на параметры (в том числе и константы скоростей) и реагенты. Реагенты, точнее, их концентрации – выступают в качестве переменных интегрирования систем дифф.ур-ний, в то время как параметры – это обычно коэффициенты или функции времени в этих уравнениях. Второе: говоря о реагентах, мы можем иметь в виду функции концентраций от времени, получаемые в процессе интегрирования; либо просто начальные значения концентраций, тогда это обычные параметры схемы. Эти случаи учитываются при вычислении значений выражений: вводится понятие //Контекст// вычисления. Объекты этого типа передаются в методы ''evaluate()'' классов //Expression// и //ParsedExpression//, используются сначала при синтаксическом разборе, а затем и при вычислениях в процессе интегрирования. struct CalcContext { double time; const double* concentrations; const SchemaInstance* schemaInstance; }; class ParsedExpression { public: virtual double evaluate(const CalcContext*) const = 0; ... }; Выражения, не содержащие ссылок на //Сущности//, вычисляются без //Контекста// (в качестве аргумента //nullptr//). Выражения, не ссылающиеся на значения переменных интегрирования, вычисляются в контексте со значением указателя //concentrations=nullptr//((например, такой контекст используется при вычислении начальных значений концентраций реагентов)).