# Компоненты Ride
# Parser
Parser проверяет корректность синтаксиса скрипта Ride, наличие всех используемых переменных и функций и формирует абстрактное синтаксическое дерево скрипта, которое затем использует Compiler.
# Compiler
Compiler на основе абстрактного синтаксического дерева формирует исполняемый код скрипта. Скомпилированный скрипт можно установить на аккаунт или ассет.
# Estimator
Estimator вычисляет сложность скомпилированного скрипта.
В настоящее время поддерживаются две версии Estimator:
- версия 2 — используется после активации фичи № 14 “Block Reward and Community Driven Monetary Policy”;
- версия 3 — используется после активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions”.
Parser, Compiler и Estimator используется в инструментах разработки, таких как Waves IDE и Surfboard.
# Evaluator
Evaluator исполняет код скрипта на ноде в случае отправки транзакции со смарт-аккаунта, транзакции с участием смарт-ассета или транзакции вызова скрипта dApp, в процессе валидации транзакции и ее выполнения (получения нового состояния блокчейна в результате транзакции).
Evaluator является компонентом ноды.
# Decompiler
Decompiler преобразует код скрипта из исполняемого формата в код на языке Ride.
Decompiler используется в Waves Explorer для просмотра скрипта аккаунта, dApp или ассета.
Декомпилированный код может не совпадать с исходным кодом и даже быть синтаксически некорректным. В частности, в нем отсутствуют типы аргументов в объявлении функций.