Added in checking the stdlib directory to Kalypso

This commit is contained in:
Nathan Braswell
2016-02-05 21:34:25 -05:00
parent f941cb98dd
commit 7a2cef08e8
6 changed files with 33 additions and 8 deletions

View File

@@ -15,16 +15,19 @@ obj importer (Object) {
var parse: parser
var ast_pass: ast_transformation
var name_ast_map: map<string, pair<*tree<symbol>,*ast_node>>
fun construct(parseIn: ref parser, ast_passIn: ref ast_transformation): *importer {
var import_paths: vector<string>
fun construct(parseIn: ref parser, ast_passIn: ref ast_transformation, import_paths_in: vector<string>): *importer {
parse.copy_construct(&parseIn)
ast_pass.copy_construct(&ast_passIn)
name_ast_map.construct()
import_paths.copy_construct(&import_paths_in)
return this
}
fun copy_construct(old: *importer) {
parse.copy_construct(&old->parse)
ast_pass.copy_construct(&old->ast_pass)
name_ast_map.copy_construct(&old->name_ast_map)
import_paths.copy_construct(&old->import_paths)
}
fun operator=(old: ref importer) {
destruct()
@@ -34,6 +37,7 @@ obj importer (Object) {
parse.destruct()
ast_pass.destruct()
name_ast_map.destruct()
import_paths.destruct()
}
fun import(file_name: string): *ast_node {
println("**First Pass**")
@@ -58,7 +62,17 @@ obj importer (Object) {
return name_ast_map[file_name].second
print("pre-parse: "); println(file_name)
var parse_tree = parse.parse_input(read_file(file_name), file_name)
var file = string()
import_paths.for_each(fun(path: string) {
println(string("Checking ") + path + " for " + file_name)
if (file_exists(path + file_name)) {
println("Found it!")
file = read_file(path + file_name)
return
} else
println("did not find it")
})
var parse_tree = parse.parse_input(file, file_name)
print("post-parse: "); println(file_name)
write_file(file_name + ".parse.dot", syntax_tree_to_dot(parse_tree))
print("pre-trim: "); println(file_name)