#pragma once #include "AbstractExpression.h" #include "actions/expression/Value.h" namespace actions { namespace expression { namespace nodes { class VectorConstructorExpression : public AbstractExpression { public: VectorConstructorExpression(antlr4::Token* token, std::shared_ptr xExpression, std::shared_ptr yExpression, std::shared_ptr zExpression); ~VectorConstructorExpression() override; Value execute(const ProgramVariables& variables) const override; bool validate(antlr4::Parser* parser, const ParseContext& context) override; void validationDone() override; protected: ValueType determineReturnType() const override; private: std::shared_ptr m_xExpression; std::shared_ptr m_yExpression; std::shared_ptr m_zExpression; }; } // namespace nodes } // namespace expression } // namespace actions