mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2026-01-25 13:07:13 +00:00
interpreter_tree first iteration
This commit is contained in:
parent
7f4cd5ee9a
commit
1ba132bb06
15 changed files with 1829 additions and 1 deletions
36
include/node.hpp
Normal file
36
include/node.hpp
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#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
|
||||
Loading…
Add table
Add a link
Reference in a new issue