Clean up for demo

This commit is contained in:
Nathan Braswell
2016-04-13 16:25:16 -04:00
parent 38ec4abc01
commit e732a6e41d
6 changed files with 61 additions and 18 deletions

View File

@@ -113,7 +113,7 @@ obj ast_transformation (Object) {
}
// defines inside of objects + ADTs, outside declaration statements, and function prototypes
fun second_pass(parse_tree: *tree<symbol>, translation_unit: *ast_node) {
println(string("Second Pass for ") + translation_unit->translation_unit.name)
/*println(string("Second Pass for ") + translation_unit->translation_unit.name)*/
// we go through the parse tree for getting functions, but we're going through the ast for the things we've already set up and using the ast_to_syntax map
parse_tree->children.for_each(fun(child: *tree<symbol>) {
if (child->data.name == "function") {
@@ -246,7 +246,7 @@ obj ast_transformation (Object) {
}
// The third pass finishes up by doing all function bodies (top level and methods in objects)
fun third_pass(parse_tree: *tree<symbol>, translation_unit: *ast_node) {
println(string("Third Pass for ") + translation_unit->translation_unit.name)
/*println(string("Third Pass for ") + translation_unit->translation_unit.name)*/
translation_unit->translation_unit.children.for_each(fun(node: *ast_node) {
match(*node) {
ast_node::type_def(backing) {
@@ -270,7 +270,7 @@ obj ast_transformation (Object) {
}
// The fourth pass generates the class templates that have not yet been generated in a worklist loop
fun fourth_pass(parse_tree: *tree<symbol>, translation_unit: *ast_node) {
println(string("Fourth Pass for ") + translation_unit->translation_unit.name)
/*println(string("Fourth Pass for ") + translation_unit->translation_unit.name)*/
while (!fourth_pass_worklist.empty()) {
var partially_inst_type_def = fourth_pass_worklist.pop()
partially_inst_type_def->type_def.methods.for_each(fun(method: *ast_node) {

View File

@@ -41,7 +41,9 @@ obj importer (Object) {
}
fun import(file_name: string): *ast_node {
println("**First Pass**")
print("parsing: ")
var to_ret = import_first_pass(file_name)
println()
println("**Second Pass**")
name_ast_map.for_each(fun(name: string, tree_pair: pair<*tree<symbol>, *ast_node>) ast_pass.second_pass(tree_pair.first, tree_pair.second);)
println("**Third Pass**")
@@ -66,14 +68,16 @@ obj importer (Object) {
/*print("pre-parse: "); println(file_name)*/
var file = string()
import_paths.for_each(fun(path: string) {
println(string("Checking ") + path + " for " + file_name)
/*println(string("Checking ") + path + " for " + file_name)*/
if (file_exists(path + file_name)) {
println("Found it!")
/*println("Found it!")*/
file = read_file(path + file_name)
return
} else
println("did not find it")
} else {
/*println("did not find it")*/
}
})
print(file_name + ", ")
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))*/
@@ -88,8 +92,8 @@ obj importer (Object) {
}
fun register(file_name: string, parse_tree: *tree<symbol>, translation_unit: *ast_node) {
name_ast_map.set(file_name, make_pair(parse_tree, translation_unit))
print("Registered parse_tree+translation_unit for ")
println(file_name)
/*print("Registered parse_tree+translation_unit for ")*/
/*println(file_name)*/
}
fun trim(parse_tree: *tree<symbol>) {
remove_node(symbol("$NULL$", false), parse_tree)

View File

@@ -133,7 +133,7 @@ obj parser (Object) {
}
var acc_state = gss.frontier_get_acc_state(input.size-1)
if (acc_state) {
println("ACCEPTED!")
/*println("ACCEPTED!")*/
return gss.get_edge(acc_state, v0)
}

59
stdlib/simple_print.krak Normal file
View File

@@ -0,0 +1,59 @@
fun println() {
print("\n")
}
fun println(to_print: *char) {
print(to_print)
print("\n")
}
fun println(to_print: char) {
print(to_print)
print("\n")
}
fun println(to_print: int) {
print(to_print)
print("\n")
}
fun println(to_print: float) {
print(to_print)
print("\n")
}
fun println(to_print: double) {
print(to_print)
print("\n")
}
fun println(to_print: bool) {
print(to_print)
print("\n")
}
fun print(to_print: *char) {
__if_comp__ __C__ simple_passthrough(to_print::) """
printf("%s", to_print);
"""
}
fun print(to_print: char) {
__if_comp__ __C__ simple_passthrough(to_print::) """
printf("%c", to_print);
"""
}
fun print(to_print: int) {
__if_comp__ __C__ simple_passthrough(to_print::) """
printf("%d", to_print);
"""
}
fun print(to_print: float) {
__if_comp__ __C__ simple_passthrough(to_print::) """
printf("%f", to_print);
"""
}
fun print(to_print: double) {
__if_comp__ __C__ simple_passthrough(to_print::) """
printf("%f", to_print);
"""
}
fun print(to_print: bool) {
if (to_print) print("true")
else print("false")
}