Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
BinaryExpression.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <ast/Expression.h>
9
10#include <common/Operators.hpp>
11#include <common/EvalHelper.h>
12
13namespace cli {
14
15class BinaryExpression final : public Expression {
17 std::unique_ptr < Expression > m_left;
18 std::unique_ptr < Expression > m_right;
19
20public:
21 BinaryExpression ( abstraction::Operators::BinaryOperators operation, std::unique_ptr < Expression > left, std::unique_ptr < Expression > right ) : m_operation ( operation ), m_left ( std::move ( left ) ), m_right ( std::move ( right ) ) {
22 }
23
24 std::shared_ptr < abstraction::Value > translateAndEval ( Environment & environment ) const override {
26 params.push_back ( m_left->translateAndEval ( environment ) );
27 params.push_back ( m_right->translateAndEval ( environment ) );
28
30
31 return abstraction::EvalHelper::evalOperator ( environment, m_operation, params, category );
32 }
33
34};
35
36} /* namespace cli */
37
AlgorithmCategory
Definition: AlgorithmCategories.hpp:14
static std::shared_ptr< abstraction::Value > evalOperator(abstraction::TemporariesHolder &environment, abstraction::Operators::BinaryOperators type, const ext::vector< std::shared_ptr< abstraction::Value > > &params, abstraction::AlgorithmCategories::AlgorithmCategory category)
Definition: EvalHelper.cpp:29
BinaryOperators
Definition: Operators.hpp:14
Definition: BinaryExpression.h:15
BinaryExpression(abstraction::Operators::BinaryOperators operation, std::unique_ptr< Expression > left, std::unique_ptr< Expression > right)
Definition: BinaryExpression.h:21
std::shared_ptr< abstraction::Value > translateAndEval(Environment &environment) const override
Definition: BinaryExpression.h:24
Definition: Environment.h:29
Definition: Expression.h:14
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Definition: Arg.h:11
Definition: FordFulkerson.hpp:16