Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
CastExpression.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <ast/Expression.h>
9#include <common/CastHelper.h>
10
11namespace cli {
12
13class CastExpression final : public Expression {
14 std::unique_ptr < cli::Arg > m_type;
15 std::unique_ptr < Expression > m_expression;
16
17public:
18 CastExpression ( std::unique_ptr < cli::Arg > type, std::unique_ptr < Expression > expression ) : m_type ( std::move ( type ) ), m_expression ( std::move ( expression ) ) {
19 }
20
21 std::shared_ptr < abstraction::Value > translateAndEval ( Environment & environment ) const override {
22 std::string type = m_type->eval ( environment );
23
24 std::shared_ptr < abstraction::Value > translatedExpression = m_expression->translateAndEval ( environment );
25
26 return abstraction::CastHelper::eval ( environment, translatedExpression, type );
27 }
28
29};
30
31} /* namespace cli */
32
static std::shared_ptr< abstraction::Value > eval(abstraction::TemporariesHolder &environment, const std::shared_ptr< abstraction::Value > &param, const std::string &type)
Definition: CastHelper.cpp:13
Definition: CastExpression.h:13
CastExpression(std::unique_ptr< cli::Arg > type, std::unique_ptr< Expression > expression)
Definition: CastExpression.h:18
std::shared_ptr< abstraction::Value > translateAndEval(Environment &environment) const override
Definition: CastExpression.h:21
Definition: Environment.h:29
Definition: Expression.h:14
Definition: Arg.h:11
Definition: FordFulkerson.hpp:16