tcalc 0.2.0
 
Loading...
Searching...
No Matches
variable.hpp
Go to the documentation of this file.
1
12#pragma once
13
14#include <string>
15#include <utility>
16
17#include "tcalc/ast/node.hpp"
18#include "tcalc/common.hpp"
19
20namespace tcalc::ast {
21
26class VarRefNode : public Node
27{
28private:
29 std::string _name;
30
31public:
37 explicit VarRefNode(std::string name)
38 : Node{ NodeType::VARREF }
39 , _name{ std::move(name) }
40 {
41 }
42
43 ~VarRefNode() override = default;
44
50 [[nodiscard]] TCALC_INLINE auto& name() const noexcept { return _name; }
51
57 TCALC_INLINE void name(std::string name) noexcept { _name = std::move(name); }
58};
59
64class VarAssignNode : public Node
65{
66private:
67 std::string _name;
68 NodePtr<> _body;
69
70public:
76 explicit VarAssignNode(std::string name)
77 : VarAssignNode{ std::move(name), nullptr }
78 {
79 }
80
89 , _name{ std::move(name) }
90 , _body{ std::move(body) }
91 {
92 }
93
94 ~VarAssignNode() override = default;
95
101 [[nodiscard]] TCALC_INLINE auto& name() const noexcept { return _name; }
102
108 TCALC_INLINE void name(std::string name) noexcept { _name = std::move(name); }
109
115 [[nodiscard]] TCALC_INLINE auto& body() const noexcept { return _body; }
116
122 TCALC_INLINE auto& body() noexcept { return _body; }
123
129 TCALC_INLINE void body(NodePtr<> body) noexcept { _body = std::move(body); }
130};
131
132}
Base class for AST nodes.
Definition node.hpp:87
Variable assign node.
Definition variable.hpp:65
VarAssignNode(std::string name, NodePtr<> body)
Construct a new Var Assign Node object with body.
Definition variable.hpp:87
VarAssignNode(std::string name)
Construct a new Var Assign Node object.
Definition variable.hpp:76
TCALC_INLINE void name(std::string name) noexcept
Set variable name.
Definition variable.hpp:108
TCALC_INLINE auto & body() const noexcept
Get variable body.
Definition variable.hpp:115
TCALC_INLINE auto & name() const noexcept
Get variable name.
Definition variable.hpp:101
TCALC_INLINE void body(NodePtr<> body) noexcept
Set variable body.
Definition variable.hpp:129
TCALC_INLINE auto & body() noexcept
Get variable body.
Definition variable.hpp:122
Variable node.
Definition variable.hpp:27
TCALC_INLINE auto & name() const noexcept
Get variable name.
Definition variable.hpp:50
TCALC_INLINE void name(std::string name) noexcept
Set variable name.
Definition variable.hpp:57
VarRefNode(std::string name)
Construct a new Variable Node object.
Definition variable.hpp:37
tcalc common header.
Base class for AST nodes.
std::shared_ptr< NT > NodePtr
Shared pointer to a node.
Definition node.hpp:119
NodeType
AST node type.
Definition node.hpp:30