Use arena in parser

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-25 15:34:05 +02:00
committed by CHatingPython
parent d2cfbb6763
commit 156aa224ee
7 changed files with 62 additions and 13 deletions
+4 -1
View File
@@ -5,6 +5,7 @@
#include "furc/ast/node.hpp"
#include "furc/ast/program.hpp"
#include "furc/front/lexer.hpp"
#include "furlang/arena.hpp"
#include <vector>
@@ -22,7 +23,8 @@ public:
parser& operator=(parser&&) = default;
parser& operator=(const parser&) = delete;
public:
ast::node_handle<ast::program_node> parse();
// parser owns the arena :3c
ast::node_handle<ast::program_node> parse() &;
private:
ast::node_handle<ast::declaration_node> parse_declaration();
ast::node_handle<ast::statement_node> parse_statement();
@@ -36,6 +38,7 @@ private:
std::string m_filename;
std::string m_content;
lexer m_lexer;
furlang::arena m_arena;
std::vector<token_handle<>> m_peekBuffer;
};