Add finishing touches to code for part 6 of compiler series

This commit is contained in:
2019-10-10 13:14:00 -07:00
parent e9cd4a915b
commit 463db16df7
5 changed files with 44 additions and 5 deletions

View File

@@ -41,6 +41,15 @@ void definition_defn::resolve(const type_mgr& mgr) {
}
}
void definition_defn::compile() {
env_ptr new_env = env_ptr(new env_offset(0, nullptr));
for(auto it = params.rbegin(); it != params.rend(); it++) {
new_env = env_ptr(new env_var(*it, new_env));
}
body->compile(new_env, instructions);
instructions.push_back(instruction_ptr(new instruction_update(params.size())));
}
void definition_data::typecheck_first(type_mgr& mgr, type_env& env) {
type_data* this_type = new type_data(name);
type_ptr return_type = type_ptr(this_type);
@@ -67,3 +76,6 @@ void definition_data::resolve(const type_mgr& mgr) {
// Nothing
}
void definition_data::compile() {
}