Files
BlitzNext/compiler/prognode.hpp
T

41 lines
848 B
C++
Raw Normal View History

2014-01-31 08:23:00 +13:00
#ifndef PROGNODE_H
#define PROGNODE_H
2019-01-18 15:55:51 +01:00
#include "codegen.hpp"
2019-01-18 17:04:57 +01:00
#include "node.hpp"
2014-01-31 08:23:00 +13:00
2019-01-18 17:04:57 +01:00
struct UserFunc {
string ident, proc, lib;
UserFunc(const UserFunc& t) : ident(t.ident), proc(t.proc), lib(t.lib) {}
UserFunc(const string& id, const string& pr, const string& lb) : ident(id), proc(pr), lib(lb) {}
2014-01-31 08:23:00 +13:00
};
2019-01-18 17:04:57 +01:00
struct ProgNode : public Node {
DeclSeqNode* consts;
DeclSeqNode* structs;
DeclSeqNode* funcs;
DeclSeqNode* datas;
StmtSeqNode* stmts;
2014-01-31 08:23:00 +13:00
2019-01-18 17:04:57 +01:00
Environ* sem_env;
2014-01-31 08:23:00 +13:00
string file_lab;
2019-01-18 17:04:57 +01:00
ProgNode(DeclSeqNode* c, DeclSeqNode* s, DeclSeqNode* f, DeclSeqNode* d, StmtSeqNode* ss)
: consts(c), structs(s), funcs(f), datas(d), stmts(ss)
{}
~ProgNode()
{
2014-01-31 08:23:00 +13:00
delete consts;
delete structs;
delete funcs;
delete datas;
2019-01-18 17:04:57 +01:00
delete stmts;
2014-01-31 08:23:00 +13:00
}
2019-01-18 17:04:57 +01:00
Environ* semant(Environ* e);
void translate(Codegen* g, const vector<UserFunc>& userfuncs);
2014-01-31 08:23:00 +13:00
};
#endif