Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
VarDeclareCommand.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <ast/Command.h>
10
11namespace cli {
12
13class VarDeclareCommand : public Command {
14 std::unique_ptr < cli::Arg > m_name;
16 std::unique_ptr < Expression > m_expr;
17
18public:
19 VarDeclareCommand ( std::unique_ptr < cli::Arg > name, abstraction::TypeQualifiers::TypeQualifierSet typeQualifiers, std::unique_ptr < Expression > expr ) : m_name ( std::move ( name ) ), m_typeQualifiers ( typeQualifiers ), m_expr ( std::move ( expr ) ) {
20 }
21
22 CommandResult run ( Environment & environment ) const override {
23 std::shared_ptr < abstraction::Value > value = m_expr->translateAndEval ( environment );
24 std::shared_ptr < abstraction::Value > res = value->clone ( m_typeQualifiers, false );
25 environment.setVariable ( m_name->eval ( environment ), res );
26 return CommandResult::OK;
27 }
28};
29
30} /* namespace cli */
31
TypeQualifierSet
Definition: TypeQualifiers.hpp:15
Definition: Command.h:14
Definition: Environment.h:29
void setVariable(std::string name, std::shared_ptr< abstraction::Value > value)
Definition: Environment.h:87
Definition: VarDeclareCommand.h:13
CommandResult run(Environment &environment) const override
Definition: VarDeclareCommand.h:22
VarDeclareCommand(std::unique_ptr< cli::Arg > name, abstraction::TypeQualifiers::TypeQualifierSet typeQualifiers, std::unique_ptr< Expression > expr)
Definition: VarDeclareCommand.h:19
return res
Definition: MinimizeByPartitioning.h:145
Definition: Arg.h:11
CommandResult
Definition: CommandResult.h:10
Definition: FordFulkerson.hpp:16