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 parse: parser
var ast_pass: ast_transformation var ast_pass: ast_transformation
var name_ast_map: map<string, pair<*tree<symbol>,*ast_node>> 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) parse.copy_construct(&parseIn)
ast_pass.copy_construct(&ast_passIn) ast_pass.copy_construct(&ast_passIn)
name_ast_map.construct() name_ast_map.construct()
import_paths.copy_construct(&import_paths_in)
return this return this
} }
fun copy_construct(old: *importer) { fun copy_construct(old: *importer) {
parse.copy_construct(&old->parse) parse.copy_construct(&old->parse)
ast_pass.copy_construct(&old->ast_pass) ast_pass.copy_construct(&old->ast_pass)
name_ast_map.copy_construct(&old->name_ast_map) name_ast_map.copy_construct(&old->name_ast_map)
import_paths.copy_construct(&old->import_paths)
} }
fun operator=(old: ref importer) { fun operator=(old: ref importer) {
destruct() destruct()
@@ -34,6 +37,7 @@ obj importer (Object) {
parse.destruct() parse.destruct()
ast_pass.destruct() ast_pass.destruct()
name_ast_map.destruct() name_ast_map.destruct()
import_paths.destruct()
} }
fun import(file_name: string): *ast_node { fun import(file_name: string): *ast_node {
println("**First Pass**") println("**First Pass**")
@@ -58,7 +62,17 @@ obj importer (Object) {
return name_ast_map[file_name].second return name_ast_map[file_name].second
print("pre-parse: "); println(file_name) 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) print("post-parse: "); println(file_name)
write_file(file_name + ".parse.dot", syntax_tree_to_dot(parse_tree)) write_file(file_name + ".parse.dot", syntax_tree_to_dot(parse_tree))
print("pre-trim: "); println(file_name) print("pre-trim: "); println(file_name)

View File

@@ -137,11 +137,13 @@ obj parser (Object) {
println("**PARSE ERROR**") println("**PARSE ERROR**")
println("REJECTED") println("REJECTED")
println("parsing (not lexing) failed for ") println("parsing (not lexing) failed AT THE END for ")
println(name) println(name)
print(" line number: ") print(" line number: ")
print(find_line(input.size)) print(find_line(input.size))
println("(minus 2?)") println("(minus 2?)")
print("' with txt ")
println(input.last().to_string())
return null<tree<symbol>>() return null<tree<symbol>>()
} }
fun reducer(i: int) { fun reducer(i: int) {

View File

@@ -6,6 +6,10 @@ fun println(to_print: *char) {
print(to_print) print(to_print)
print("\n") print("\n")
} }
fun println(to_print: char) {
print(to_print)
print("\n")
}
fun println(to_print: int) { fun println(to_print: int) {
print(to_print) print(to_print)
print("\n") print("\n")
@@ -23,6 +27,11 @@ fun print(to_print: *char) {
printf("%s", 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) { fun print(to_print: int) {
__if_comp__ __C__ simple_passthrough(to_print::) """ __if_comp__ __C__ simple_passthrough(to_print::) """
printf("%d", to_print); printf("%d", to_print);

View File

@@ -66,7 +66,7 @@ fun main(argc: int, argv: **char):int {
kraken_file_name = string(argv[1]) kraken_file_name = string(argv[1])
var parse.construct(gram): parser var parse.construct(gram): parser
var ast_pass.construct(): ast_transformation var ast_pass.construct(): ast_transformation
var importer.construct(parse, ast_pass): importer var importer.construct(parse, ast_pass, vector(string(), string("../stdlib/"))): importer
importer.import(kraken_file_name) importer.import(kraken_file_name)
println("NOW DOING C_GENERATOR") println("NOW DOING C_GENERATOR")
var c_generator.construct(): c_generator var c_generator.construct(): c_generator

View File

@@ -1,4 +1,4 @@
import io:* import simple_print:*
import conversions:* import conversions:*
fun main():int { fun main():int {

View File

@@ -1,13 +1,13 @@
import io; import simple_print;
fun addAndPrint<T>(a: T, b: T): T { fun addAndPrint<T>(a: T, b: T): T {
io::print(a+b); simple_print::print(a+b);
return a+b; return a+b;
} }
fun main(): int { fun main(): int {
addAndPrint<int>(10,12); addAndPrint<int>(10,12);
io::print("\n"); simple_print::print("\n");
return 0; return 0;
} }