Add default constructor to handle

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-26 12:30:01 +02:00
committed by CHatingPython
parent ad84bc50bd
commit 7017d83204
8 changed files with 172 additions and 81 deletions
+2 -14
View File
@@ -5,7 +5,6 @@
#include "furc/ast/statement.hpp"
#include "furc/front/token.hpp"
#include <ostream>
#include <vector>
namespace furc {
@@ -42,9 +41,7 @@ public:
front::token name() const { return m_name; }
public:
std::ostream& print(std::ostream& os) const override {
return os << "function " << m_name->string << " declaration";
}
std::ostream& print(std::ostream& os) const override;
protected:
front::token m_name;
};
@@ -74,16 +71,7 @@ public:
const function_body_handle& body() const { return m_body; }
public:
std::ostream& print(std::ostream& os) const override {
function_declarartion_node::print(os);
os << ':';
if (m_body.present()) {
for (const auto& entry : m_body->statements)
os << '\n' << entry;
return os << '\n' << m_body->end << ": " << m_name->string << " end";
}
return os << m_body.error(); // error
}
std::ostream& print(std::ostream& os) const override;
private:
function_body_handle m_body;
};
+1 -6
View File
@@ -5,8 +5,6 @@
#include "furc/ast/node.hpp"
#include "furc/front/token.hpp"
#include <ostream>
namespace furc {
namespace ast {
@@ -50,10 +48,7 @@ public:
const handle<front::integer_token>& value() const { return m_value; }
public:
std::ostream& print(std::ostream& os) const override {
if (m_value.has_error()) return os << m_value.error();
return os << "integer literal (" << *m_value << ")";
}
std::ostream& print(std::ostream& os) const override;
private:
handle<front::integer_token> m_value;
};
+1 -8
View File
@@ -4,7 +4,6 @@
#include "furc/ast/declaration.hpp"
#include "furc/ast/node.hpp"
#include <ostream>
#include <vector>
namespace furc {
@@ -20,13 +19,7 @@ public:
const std::vector<node_handle<declaration_node>>& declarations() const { return m_declarations; }
public:
std::ostream& print(std::ostream& os) const override {
os << "program:";
for (const auto& handle : m_declarations) {
os << '\n' << handle;
}
return os;
}
std::ostream& print(std::ostream& os) const override;
private:
std::vector<node_handle<declaration_node>> m_declarations;
};
+7 -3
View File
@@ -3,8 +3,6 @@
#include "furc/ast/node.hpp"
#include <ostream>
namespace furc {
namespace ast {
@@ -21,13 +19,19 @@ public:
virtual statement_node_t statement_type() const = 0;
};
class expression_node;
class return_statement_node : public statement_node {
public:
return_statement_node() = default;
return_statement_node(node_handle<expression_node>&& value)
: m_value(std::move(value)) {}
public:
statement_node_t statement_type() const override { return statement_node_t::Return; }
std::ostream& print(std::ostream& os) const override { return os << "return statement"; }
std::ostream& print(std::ostream& os) const override;
private:
node_handle<expression_node> m_value;
};
} // namespace ast