Basic parser

Signed-off-by: CHatingPython <chatingpython@gmail.com>
This commit is contained in:
CHatingPython
2026-05-25 07:45:24 +02:00
committed by CHatingPython
parent 28f6deaba5
commit 7df35fc075
11 changed files with 687 additions and 36 deletions
+35
View File
@@ -0,0 +1,35 @@
#ifndef FURC_AST_PROGRAM_HPP
#define FURC_AST_PROGRAM_HPP
#include "furc/ast/declaration.hpp"
#include "furc/ast/node.hpp"
#include <ostream>
#include <vector>
namespace furc {
namespace ast {
class program_node : public abstract_node<node_t::Program> {
public:
program_node() {}
public:
void push(node_handle<declaration_node>&& declaration) { m_declarations.push_back(std::move(declaration)); }
const std::vector<node_handle<declaration_node>>& declarations() const { return m_declarations; }
public:
friend std::ostream& operator<<(std::ostream& os, const program_node& node) {
os << "program";
for (const auto& handle : node.m_declarations) {
os << '\n' << handle;
}
return os;
}
private:
std::vector<node_handle<declaration_node>> m_declarations;
};
} // namespace ast
} // namespace furc
#endif // FURC_AST_PROGRAM_HPP