Forward furc ast

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-31 13:00:33 +02:00
committed by CHatingPython
parent dfcbc4f23b
commit 2395ee9977
7 changed files with 53 additions and 35 deletions
-6
View File
@@ -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
-10
View File
@@ -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
+52
View File
@@ -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
-6
View File
@@ -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 -6
View File
@@ -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
-2
View File
@@ -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
-5
View File
@@ -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