Add default constructor to handle
Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user