lang_2023/include/node.hpp

37 lines
839 B
C++
Raw Normal View History

2023-03-26 15:20:53 +03:00
#pragma once
#include <cstddef>
// for clangd
#include "parse_tree.hpp"
namespace info {
class GlobalInfo;
class Context;
} // namespace info
namespace interpreter {
class Visitor;
struct Node {
//public:
Node(info::GlobalInfo& global_info) : global_info_(global_info) {}
virtual void Accept(Visitor* visitor);
/* ------------ use visitor instead ------------
virtual void build(parser::ParseTree::Cursor& cursor) = 0; // build tree from parse tree
virtual void find_symbols() = 0; // find types, typeclasses, namespaces, ..
virtual void assign_types() = 0; // typecheck
virtual void execute(info::Context& context) = 0; // execute part of tree
*/
/*private:
size_t start_position_; // ??
size_t end_position_; // ??
Node* parent_; // ??
info::GlobalInfo& global_info_;*/
};
} // namespace interpreter