diff --git a/cbuild b/cbuild index 15a9661..1b38b43 160000 --- a/cbuild +++ b/cbuild @@ -1 +1 @@ -Subproject commit 15a9661c467facf65b2155eab3fad1ecf5f0c945 +Subproject commit 1b38b43c547246ca358a676cee5eda85598ab949 diff --git a/kerep b/kerep index 40d1828..609dfcf 160000 --- a/kerep +++ b/kerep @@ -1 +1 @@ -Subproject commit 40d1828f2cfa68e03cccaa2b3658eba07c146b02 +Subproject commit 609dfcf3ed6d454599165e8dd443ba30b95771b2 diff --git a/src/cb2c/main.c b/src/cb2c/main.c index 31a3b0a..7b56df5 100644 --- a/src/cb2c/main.c +++ b/src/cb2c/main.c @@ -1,9 +1,46 @@ -#include "cb2c.h" #include "../../kerep/src/kprint/kprint.h" +#include "../../kerep/src/Filesystem/filesystem.h" +#include "cb2c.h" +#include "../lexer/lexer.h" -int main(){ +Autoarr(Token)* parseFile(char* filename){ + tryLast(file_open(filename, FileOpenMode_Read), m_srcfile) + File* srcfile=m_srcfile.value.VoidPtr; + char* src; + tryLast(file_readAll(srcfile, &src), m_srcLen) + uint64 srcLen=m_srcLen.value.UInt64; + kprintf("srclen: %lu\n", srcLen); + src[srcLen]='\0'; + tryLast(lexan(src, filename), m_tokens) + Autoarr(Token)* tokens=m_tokens.value.VoidPtr; + return tokens; +} + +int main(const int argc, const char* const* argv){ if(!setlocale(LC_ALL, "C.UTF8")) kprintf("\e[93msetlocale failed\n"); + + bool compile=0, translate=0; + char *compiler=NULL, *tranlation_out_dir=NULL; + for(int argi=1; argi=argc || argv[argi+1][0]=='-') + throw("after argument --compiler must be compiler name"); + compiler=argv[++argi]; + } + else if(cptr_compare(a, "-t") || cptr_compare(a, "--tranlation-out-dir")){ + translate=1; + if(argi+1>=argc || argv[argi+1][0]=='-') + throw("after argument --translation-out-dir must be directory path"); + tranlation_out_dir=argv[argi+1]; + if(!dir_exists(tranlation_out_dir)) + dir_create(tranlation_out_dir); + } + } + kprintf("\n"); return 0; // kerep type system ktDescriptors_beginInit(); ktDescriptors_initKerepTypes(); @@ -12,6 +49,9 @@ int main(){ // keywords search tree init_keywordsSearchTree(); kprint(kp_s|kp_fgGray, "keywordsSearchTree: ", kp_h|kp_pre, keywordsSearchTree, kp_c, '\n'); + Autoarr(Token)* tokens=parseFile("src.cb"); + kprintf("tokens: %u\n", Autoarr_length(tokens)); + Autoarr_foreach(tokens, tok, kprintf("%u %s\n",tok.id, tok.value)); STNode_free(keywordsSearchTree); return 0; } \ No newline at end of file