From fe81eba1c232ab99bcfedf9546a82b06c796b086 Mon Sep 17 00:00:00 2001 From: A404M Date: Sun, 11 May 2025 15:59:43 +0330 Subject: some clean ups --- src/compiler/ast-tree.c | 20 ++++++++------------ src/compiler/ast-tree.h | 14 +++++++------- src/compiler/parser.c | 7 +++---- src/compiler/parser.h | 4 ++-- src/main.c | 20 ++++++++++---------- src/utils/time.c | 16 +++++++++++----- src/utils/time.h | 8 +++++--- 7 files changed, 46 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index b343cc7..688fc8b 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -1395,8 +1395,7 @@ AstTreeVariables copyAstTreeVariables(AstTreeVariables variables, AstTreeRoots makeAstTree(const char *filePath #ifdef PRINT_STATISTICS , - struct timespec *lexingTime, - struct timespec *parsingTime + Time *lexingTime, Time *parsingTime #endif ) { AstTreeRoots roots = { @@ -1425,8 +1424,7 @@ RETURN_ERROR: AstTreeRoot *getAstTreeRoot(char *filePath, AstTreeRoots *roots #ifdef PRINT_STATISTICS , - struct timespec *lexingTime, - struct timespec *parsingTime + Time *lexingTime, Time *parsingTime #endif ) { for (size_t i = 0; i < roots->size; ++i) { @@ -1436,15 +1434,14 @@ AstTreeRoot *getAstTreeRoot(char *filePath, AstTreeRoots *roots } } - struct timespec start, end; - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start); + Time start = get_time(); ParserNode *parserNode = parserFromPath(filePath, lexingTime); if (parserNode == NULL) { goto RETURN_ERROR; } - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end); + Time end = get_time(); *parsingTime = time_add(*parsingTime, time_diff(end, start)); AstTreeRoot *root = makeAstRoot(parserNode, filePath); parserNodeDelete(parserNode); @@ -2016,7 +2013,7 @@ AstTree *astTreeParse(const ParserNode *parserNode, AstTreeHelper *helper) { case PARSER_TOKEN_KEYWORD_UNDEFINED: return astTreeParseKeyword(parserNode, AST_TREE_TOKEN_VALUE_UNDEFINED); case PARSER_TOKEN_KEYWORD_PUTC: - return astTreeParsePrintU64(parserNode, helper); + return astTreeParsePutc(parserNode, helper); case PARSER_TOKEN_KEYWORD_RETURN: return astTreeParseReturn(parserNode, helper); case PARSER_TOKEN_OPERATOR_ASSIGN: @@ -2528,8 +2525,7 @@ AstTree *astTreeParseKeyword(const ParserNode *parserNode, AstTreeToken token) { parserNode->str_end); } -AstTree *astTreeParsePrintU64(const ParserNode *parserNode, - AstTreeHelper *helper) { +AstTree *astTreeParsePutc(const ParserNode *parserNode, AstTreeHelper *helper) { ParserNodeSingleChildMetadata *node_metadata = parserNode->metadata; AstTree *operand = astTreeParse(node_metadata, helper); @@ -4089,7 +4085,7 @@ bool setAllTypes(AstTree *tree, AstTreeSetTypesHelper helper, case AST_TREE_TOKEN_FUNCTION: return setTypesFunction(tree, helper); case AST_TREE_TOKEN_KEYWORD_PUTC: - return setTypesPrintU64(tree, helper); + return setTypesPutc(tree, helper); case AST_TREE_TOKEN_KEYWORD_RETURN: return setTypesReturn(tree, helper, function); case AST_TREE_TOKEN_TYPE_FUNCTION: @@ -4465,7 +4461,7 @@ bool setTypesFunction(AstTree *tree, AstTreeSetTypesHelper _helper) { return true; } -bool setTypesPrintU64(AstTree *tree, AstTreeSetTypesHelper _helper) { +bool setTypesPutc(AstTree *tree, AstTreeSetTypesHelper _helper) { AstTreeSingleChild *metadata = tree->metadata; AstTreeSetTypesHelper helper = { .lookingType = &AST_TREE_U8_TYPE, diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h index bd357d2..c1f0464 100644 --- a/src/compiler/ast-tree.h +++ b/src/compiler/ast-tree.h @@ -1,7 +1,7 @@ #pragma once #include "compiler/parser.h" -#include +#include "utils/time.h" typedef enum AstTreeToken { AST_TREE_TOKEN_FUNCTION, @@ -312,15 +312,15 @@ AstTreeVariables copyAstTreeVariables(AstTreeVariables variables, AstTreeRoots makeAstTree(const char *filePath #ifdef PRINT_STATISTICS , - struct timespec *lexingTime, - struct timespec *parsingTime + Time *lexingTime, + Time *parsingTime #endif ); AstTreeRoot *getAstTreeRoot(char *filePath, AstTreeRoots *roots #ifdef PRINT_STATISTICS , - struct timespec *lexingTime, - struct timespec *parsingTime + Time *lexingTime, + Time *parsingTime #endif ); AstTreeRoot *makeAstRoot(const ParserNode *parsedRoot, char *filePath); @@ -342,7 +342,7 @@ AstTree *astTreeParseValue(const ParserNode *parserNode, AstTreeToken token, AstTree *astTreeParseString(const ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseKeyword(const ParserNode *parserNode, AstTreeToken token); -AstTree *astTreeParsePrintU64(const ParserNode *parserNode, +AstTree *astTreeParsePutc(const ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseReturn(const ParserNode *parserNode, AstTreeHelper *helper); @@ -396,7 +396,7 @@ bool setTypesValueNull(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesValueUndefined(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesValueObject(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesFunction(AstTree *tree, AstTreeSetTypesHelper helper); -bool setTypesPrintU64(AstTree *tree, AstTreeSetTypesHelper helper); +bool setTypesPutc(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesReturn(AstTree *tree, AstTreeSetTypesHelper helper, AstTreeFunction *function); bool setTypesTypeFunction(AstTree *tree, AstTreeSetTypesHelper helper); diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 7bb0f1d..388e69a 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -731,11 +731,10 @@ ParserNode *newParserNode(ParserToken token, char const *str_begin, ParserNode *parserFromPath(const char *filePath #ifdef PRINT_STATISTICS , - struct timespec *lexingTime + Time *lexingTime #endif ) { - struct timespec start, end; - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start); + Time start = get_time(); char *code = readWholeFile(filePath); if (code == NULL) { return NULL; @@ -745,7 +744,7 @@ ParserNode *parserFromPath(const char *filePath if (lexerNodeArrayIsError(lexed)) { return NULL; } - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end); + Time end = get_time(); *lexingTime = time_add(*lexingTime, time_diff(end, start)); ParserNode *root = parser(lexed); diff --git a/src/compiler/parser.h b/src/compiler/parser.h index 05409fb..0e43c34 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -1,8 +1,8 @@ #pragma once #include "compiler/lexer.h" +#include "utils/time.h" #include "utils/type.h" -#include typedef enum ParserToken { PARSER_TOKEN_ROOT, @@ -200,7 +200,7 @@ void parserNodeDelete(ParserNode *node); ParserNode *parserFromPath(const char *filePath #ifdef PRINT_STATISTICS , - struct timespec *lexingTime + Time *lexingTime #endif ); ParserNode *parser(LexerNodeArray lexed); diff --git a/src/main.c b/src/main.c index 1e04d0b..2906c2d 100644 --- a/src/main.c +++ b/src/main.c @@ -10,20 +10,20 @@ static int run(const char *filePath) { #ifdef PRINT_STATISTICS - struct timespec start, end; - struct timespec lexTime = {0}; - struct timespec parseTime = {0}; - struct timespec astTime; - struct timespec runTime; - struct timespec totalTime = {0}; - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start); + Time start, end; + Time lexTime = {0}; + Time parseTime = {0}; + Time astTime; + Time runTime; + Time totalTime = {0}; + start = get_time(); #endif AstTreeRoots astTrees = makeAstTree(filePath, &lexTime, &parseTime); if (astTrees.size == AST_TREE_ROOTS_ERROR.size) { return 1; } #ifdef PRINT_STATISTICS - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end); + end = get_time(); astTime = time_diff(end, start); totalTime = time_add(totalTime, astTime); #endif @@ -33,7 +33,7 @@ static int run(const char *filePath) { } #endif #ifdef PRINT_STATISTICS - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start); + start =get_time(); #endif int ret; @@ -44,7 +44,7 @@ static int run(const char *filePath) { } astTreeRootsDestroy(astTrees); #ifdef PRINT_STATISTICS - clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end); + end = get_time(); runTime = time_diff(end, start); totalTime = time_add(totalTime, runTime); #endif diff --git a/src/utils/time.c b/src/utils/time.c index 979a2c8..462ba02 100644 --- a/src/utils/time.c +++ b/src/utils/time.c @@ -3,8 +3,8 @@ #include #ifdef PRINT_STATISTICS -struct timespec time_diff(struct timespec end, struct timespec start) { - struct timespec temp; +Time time_diff(Time end, Time start) { + Time temp; if ((end.tv_nsec - start.tv_nsec) < 0) { temp.tv_sec = end.tv_sec - start.tv_sec - 1; temp.tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec; @@ -15,18 +15,24 @@ struct timespec time_diff(struct timespec end, struct timespec start) { return temp; } -struct timespec time_add(struct timespec left, struct timespec right) { - struct timespec result; +Time time_add(Time left, Time right) { + Time result; result.tv_nsec = left.tv_nsec + right.tv_nsec; result.tv_sec = (left.tv_sec + right.tv_sec) + result.tv_nsec / 1000000000; result.tv_nsec %= 1000000000; return result; } -void time_print(struct timespec time) { +void time_print(Time time) { printf("%02ld:%02ld.%06ldus", time.tv_sec / 60, time.tv_sec % 60, time.tv_nsec / 1000); } + +Time get_time(){ + Time t; + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t); + return t; +} #endif diff --git a/src/utils/time.h b/src/utils/time.h index 6d5f2f6..3e7cf41 100644 --- a/src/utils/time.h +++ b/src/utils/time.h @@ -2,6 +2,8 @@ #include -struct timespec time_diff(struct timespec end, struct timespec start); -struct timespec time_add(struct timespec left, struct timespec right); -void time_print(struct timespec time); +typedef struct timespec Time; +Time time_diff(Time end, Time start); +Time time_add(Time left, Time right); +void time_print(Time time); +Time get_time(); -- cgit v1.2.3