Added in checking the stdlib directory to Kalypso
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import io:*
|
import simple_print:*
|
||||||
import conversions:*
|
import conversions:*
|
||||||
|
|
||||||
fun main():int {
|
fun main():int {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user