Работа с выражениями

Выражения широко используются в AggreGate, поэтому важно разбираться в обработке выражений с точки зрения программирования.

Выражение представлено классом Expression, который может быть создан из строки. Однако экземпляры Expression инкапсулируют анализируемое синтаксическое дерево. Поэтому если единственный экземпляр Expression вычисляется несколько раз (например, с разной средой), то разбор этого исходного текста предоставляется только раз.

Вычисление выражения, например, вычисление результатов, выполняется методами evaluate() класса Evaluator. Эти методы возвращают необработанные экземпляры Object, которые представляют собой результирующие значения. Однако есть методы, включающие преобразование результирующего значения в определенный тип: evaluateToBoolean(), evaluateToColor(), evaluateToData(), evaluateToDataTable(), evaluateToDate(), evaluateToNumber(), evaluateToString() и другие.

Объект Evaluator имеет карту схем ссылок, которая используется для определения того, какая часть системы должна быть использована для разрешения ссылки. Наиболее часто используемые схемы указывают на стандартную ссылку (когда схема не указана) и ссылку на окружение, обозначаемую схемой env.

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

  • ContextManager, который используется для нахождения контекстов

  • Context по умолчанию

  • DataTable по умолчанию

  • CallerController, который копирует разрешения пользователя или модуля, для которого вычисляется выражение.