Forward furc ast
Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
@@ -27,8 +27,6 @@ protected:
|
||||
bool equal(const node& rhs) const override;
|
||||
};
|
||||
|
||||
using declaration_node_h = node_handle<declaration_node>;
|
||||
|
||||
class function_declaration_node : public declaration_node {
|
||||
public:
|
||||
function_declaration_node(front::token name)
|
||||
@@ -45,8 +43,6 @@ protected:
|
||||
front::token m_name;
|
||||
};
|
||||
|
||||
using function_declaration_node_h = node_handle<function_declaration_node>;
|
||||
|
||||
struct function_body {
|
||||
location begin, end;
|
||||
std::vector<node_handle<statement_node>> statements;
|
||||
@@ -76,8 +72,6 @@ private:
|
||||
function_body_h m_body;
|
||||
};
|
||||
|
||||
using function_definition_node_h = node_handle<function_definition_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@ protected:
|
||||
bool equal(const node& rhs) const override;
|
||||
};
|
||||
|
||||
using expression_node_h = node_handle<expression_node>;
|
||||
|
||||
class var_read_expression_node : public expression_node {
|
||||
public:
|
||||
var_read_expression_node(handle<std::string_view>&& name)
|
||||
@@ -46,8 +44,6 @@ private:
|
||||
handle<std::string_view> m_name;
|
||||
};
|
||||
|
||||
using var_read_expression_node_h = node_handle<var_read_expression_node>;
|
||||
|
||||
enum class unaryop_expression_node_t {
|
||||
Positive,
|
||||
Negative,
|
||||
@@ -79,8 +75,6 @@ private:
|
||||
expression_node_h m_node;
|
||||
};
|
||||
|
||||
using unaryop_expression_node_h = node_handle<unaryop_expression_node>;
|
||||
|
||||
enum class binop_expression_node_t {
|
||||
None = 0,
|
||||
Add,
|
||||
@@ -121,8 +115,6 @@ private:
|
||||
expression_node_h m_rhs;
|
||||
};
|
||||
|
||||
using binop_expression_node_h = node_handle<binop_expression_node>;
|
||||
|
||||
class var_assign_expression_node : public expression_node {
|
||||
public:
|
||||
var_assign_expression_node(expression_node_h&& lhs, expression_node_h&& rhs)
|
||||
@@ -146,8 +138,6 @@ private:
|
||||
expression_node_h m_rhs;
|
||||
};
|
||||
|
||||
using var_assign_expression_node_h = node_handle<var_assign_expression_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
#ifndef FURC_AST_FWD_HPP
|
||||
#define FURC_AST_FWD_HPP
|
||||
|
||||
#include "furc/handle.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace furc {
|
||||
namespace ast {
|
||||
|
||||
class node;
|
||||
|
||||
template <typename T, typename Error = std::string>
|
||||
using node_handle = handle<T*, Error>;
|
||||
|
||||
class literal_node;
|
||||
using literal_node_h = node_handle<literal_node>;
|
||||
class expression_node;
|
||||
using expression_node_h = node_handle<expression_node>;
|
||||
class declaration_node;
|
||||
using declaration_node_h = node_handle<declaration_node>;
|
||||
class statement_node;
|
||||
using statement_node_h = node_handle<statement_node>;
|
||||
class program_node;
|
||||
using program_node_h = node_handle<program_node>;
|
||||
|
||||
class string_literal_node;
|
||||
using string_literal_node_h = node_handle<string_literal_node>;
|
||||
class integer_literal_node;
|
||||
using integer_literal_node_h = node_handle<integer_literal_node>;
|
||||
|
||||
class var_read_expression_node;
|
||||
using var_read_expression_node_h = node_handle<var_read_expression_node>;
|
||||
class unaryop_expression_node;
|
||||
using unaryop_expression_node_h = node_handle<unaryop_expression_node>;
|
||||
class binop_expression_node;
|
||||
using binop_expression_node_h = node_handle<binop_expression_node>;
|
||||
class var_assign_expression_node;
|
||||
using var_assign_expression_node_h = node_handle<var_assign_expression_node>;
|
||||
|
||||
class function_declaration_node;
|
||||
using function_declaration_node_h = node_handle<function_declaration_node>;
|
||||
class function_definition_node;
|
||||
using function_definition_node_h = node_handle<function_definition_node>;
|
||||
|
||||
class return_statement_node;
|
||||
using return_statement_node_h = node_handle<return_statement_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
#endif // FURC_AST_FWD_HPP
|
||||
@@ -24,8 +24,6 @@ protected:
|
||||
bool equal(const node& rhs) const override;
|
||||
};
|
||||
|
||||
using literal_node_h = node_handle<literal_node>;
|
||||
|
||||
class string_literal_node : public literal_node {
|
||||
public:
|
||||
string_literal_node(handle<std::string_view>&& value)
|
||||
@@ -42,8 +40,6 @@ private:
|
||||
handle<std::string_view> m_value;
|
||||
};
|
||||
|
||||
using string_literal_node_h = node_handle<string_literal_node>;
|
||||
|
||||
class integer_literal_node : public literal_node {
|
||||
public:
|
||||
integer_literal_node(handle<front::integer_token>&& value)
|
||||
@@ -62,8 +58,6 @@ private:
|
||||
handle<front::integer_token> m_value;
|
||||
};
|
||||
|
||||
using integer_literal_node_h = node_handle<integer_literal_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#ifndef FURC_AST_NODE_HPP
|
||||
#define FURC_AST_NODE_HPP
|
||||
|
||||
#include "furc/handle.hpp"
|
||||
|
||||
#include <string>
|
||||
#include "furc/ast/fwd.hpp"
|
||||
|
||||
namespace furc {
|
||||
namespace ast {
|
||||
@@ -48,9 +46,6 @@ protected:
|
||||
virtual bool equal(const node& rhs) const = 0;
|
||||
};
|
||||
|
||||
template <typename T, typename Error = std::string>
|
||||
using node_handle = handle<T*, Error>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ private:
|
||||
std::vector<node_handle<declaration_node>> m_declarations;
|
||||
};
|
||||
|
||||
using program_node_h = node_handle<program_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
@@ -21,9 +21,6 @@ protected:
|
||||
bool equal(const node& rhs) const override;
|
||||
};
|
||||
|
||||
using statement_node_h = node_handle<statement_node>;
|
||||
|
||||
class expression_node;
|
||||
class return_statement_node : public statement_node {
|
||||
public:
|
||||
return_statement_node() = default;
|
||||
@@ -42,8 +39,6 @@ private:
|
||||
node_handle<expression_node> m_value;
|
||||
};
|
||||
|
||||
using return_statement_node_h = node_handle<return_statement_node>;
|
||||
|
||||
} // namespace ast
|
||||
} // namespace furc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user