Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
PrefixExpression.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <ast/Expression.h>
9
10namespace cli {
11
12class PrefixExpression final : public Expression {
14 std::unique_ptr < Expression > m_expr;
15
16public:
17 PrefixExpression ( abstraction::Operators::PrefixOperators operation, std::unique_ptr < Expression > expr ) : m_operation ( operation ), m_expr ( std::move ( expr ) ) {
18 }
19
20 std::shared_ptr < abstraction::Value > translateAndEval ( Environment & environment ) const override {
22 params.push_back ( m_expr->translateAndEval ( environment ) );
23
25
26 return abstraction::EvalHelper::evalOperator ( environment, m_operation, params, category );
27 }
28
29};
30
31} /* namespace cli */
32
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
PrefixOperators
Definition: Operators.hpp:34
Definition: Environment.h:29
Definition: Expression.h:14
Definition: PrefixExpression.h:12
std::shared_ptr< abstraction::Value > translateAndEval(Environment &environment) const override
Definition: PrefixExpression.h:20
PrefixExpression(abstraction::Operators::PrefixOperators operation, std::unique_ptr< Expression > expr)
Definition: PrefixExpression.h:17
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