From 9a4507a0f59a1d21dab440cb07250b87a3bca192 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 3 May 2014 20:46:10 -0400 Subject: [PATCH] Added passthroughs and small fix for malloc/free --- src/ASTTransformation.cpp | 4 +++- src/Importer.cpp | 2 ++ stdlib/mem.krak | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 stdlib/mem.krak diff --git a/src/ASTTransformation.cpp b/src/ASTTransformation.cpp index 7ac6686..7f286c6 100644 --- a/src/ASTTransformation.cpp +++ b/src/ASTTransformation.cpp @@ -305,10 +305,12 @@ NodeTree* ASTTransformation::transform(NodeTree* from, NodeTree newNode = new NodeTree(name, ASTData(value, Symbol(concatSymbolTree(from), true), new Type(floating))); } else if (name == "double") { newNode = new NodeTree(name, ASTData(value, Symbol(concatSymbolTree(from), true), new Type(double_percision))); - } else if (name == "char") { + } else if (name == "char") { //Is this correct? This might be a useless old thing newNode = new NodeTree(name, ASTData(value, Symbol(concatSymbolTree(children[0]), true), new Type(character, 1))); //Indirection of 1 for array } else if (name == "string" || name == "triple_quoted_string") { newNode = new NodeTree(name, ASTData(value, Symbol(concatSymbolTree(children[0]), true), new Type(character, 1))); //Indirection of 1 for array + }else if (name == "character") { + newNode = new NodeTree(name, ASTData(value, Symbol(concatSymbolTree(children[0]), true), new Type(character, 0))); //Indirection of 0 for character } else { return new NodeTree(); } diff --git a/src/Importer.cpp b/src/Importer.cpp index edfcc47..eaf8838 100644 --- a/src/Importer.cpp +++ b/src/Importer.cpp @@ -52,6 +52,8 @@ NodeTree* Importer::import(std::string fileName) { programInFile.open(i+fileName); if (programInFile.is_open()) break; + else + std::cout << i+fileName << " is no good" << std::endl; } if (!programInFile.is_open()) { std::cout << "Problem opening programInFile " << fileName << "\n"; diff --git a/stdlib/mem.krak b/stdlib/mem.krak new file mode 100644 index 0000000..e4dafa2 --- /dev/null +++ b/stdlib/mem.krak @@ -0,0 +1,23 @@ +__if_comp__ __C__ __simple_passthrough__ """ + #include +""" + +char* nullPtr = 0; + +char* malloc(int size) { + char* memPtr = nullPtr; + __if_comp__ __C__ { + __simple_passthrough__ """ + memPtr = malloc(size); + """ + } + return memPtr; +} + +void free(char* memPtr) { + __if_comp__ __C__ { + __simple_passthrough__ """ + free(memPtr); + """ + } +}