summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-04-17style: Add .editorconfig and set {.c,.h} default settingsJohnny Richard
This .editorconfig is cross editor settings that should be repected when creating a new file. We can also make the Makefile use tabs instead spaces in a future patch. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-16lexer: Extract lexer_define_literal_token_props functionJohnny Richard
This is an attempt of reducing code duplication. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-16Start using string_view on lexer and parserJohnny Richard
This change fixes the memory leak when token got created. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-16util: Create string_view tool to optimize memory usageJohnny Richard
We are allocating heap memory to create tokens value, we can minimize the number of allocations if we start using string_view. We have other problems, right now the tokens value ownership are quite unclear once the AST nodes also share the memory allocation done by token_get_next_token function. It's important to clarify we also have memory leaks on the current implementation. Hence, we are going to start using string_view to make the memory management easier. :^) Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-16test: Add munit test frameworkJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-16build: Rename make target clear to cleanJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-15parser: Generate GAS 64-bit assembly for linuxJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-15cli: Remove irrelevant information when loading sourceJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-15parser: Show filepath row and col when parsing failsJohnny Richard
In order to find out where a parsing error occurred, this patch introduces the exactly location following the format 'file:row:col'. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-15parser: Create parser for function with return statementsJohnny Richard
This is a very limited parser implementation which parses a single function with return type i32 and body containing a return number statement. The parser doesn't show the 'filepath:row:col' when it fails, a future improvement would be display it to easy find where the compilation problem is located. The ast_nodes are taking the token.value ownership (which is a really bad design since not all token.value ownership has been taken causing memory leaking) but we never free them. For a future fix we could use a string_view instead since we never change the original source code. The string_view will also improve the performance a lot avoiding unnecessary heap memory allocation. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-15build: Enable warning and debug CFLAGSJohnny Richard
After enabling the warning flags, the compiler was firing the following warnings: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration] token->value = strdup("("); ^~~~~~ strcmp warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] token->value = strdup("("); ^ In order to fix these warnings above, I have decided to replace *strdup* and *strndup* by *strcpy* and *strncpy* functions. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-14build: Add clear target to MakefileJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-14lexer: Extract lexer.c and lexer.h from pipa.cJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-14build: Move *.c to src folderJohnny Richard
We want to have different folders for src and objs files. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
2023-04-14cli: Create a function to print tokensCarlos Maniero
This logic was inside the main function Signed-off-by: Carlos Maniero <carlosmaniero@gmail.com>
2023-04-14cli: Add missing LF on print_usageCarlos Maniero
Signed-off-by: Carlos Maniero <carlosmaniero@gmail.com>
2023-04-14lexer: Fix string format warningCarlos Maniero
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=] Signed-off-by: Carlos Maniero <carlosmaniero@gmail.com>
2023-04-13Create inital project structure + lexerJohnny Richard
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>