From f91fc3bac670a8c775c7ea7b8ba8789dba9559ad Mon Sep 17 00:00:00 2001 From: A404M Date: Wed, 23 Apr 2025 15:39:11 +0330 Subject: prepairing more for importing --- src/compiler/parser.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/compiler/parser.c') diff --git a/src/compiler/parser.c b/src/compiler/parser.c index f5009e5..f0d3e9b 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -1,6 +1,7 @@ #include "parser.h" #include "compiler/lexer.h" +#include "utils/file.h" #include "utils/log.h" #include "utils/memory.h" #include "utils/string.h" @@ -667,6 +668,23 @@ ParserNode *newParserNode(ParserToken token, char *str_begin, char *str_end, return parserNode; } +ParserNode *parserFromPath(const char *filePath) { + char *code = readWholeFile(filePath); + if (code == NULL) { + return NULL; + } + + LexerNodeArray lexed = lexer(code); + if (lexerNodeArrayIsError(lexed)) { + return NULL; + } + + ParserNode *root = parser(lexed); + lexerNodeArrayDestroy(lexed); + + return root; +} + ParserNode *parser(LexerNodeArray lexed) { ParserNode *root = newParserNode(PARSER_TOKEN_ROOT, NULL, NULL, NULL, NULL); if (parserNodeArray(lexed.data, lexed.data + lexed.size, root)) { -- cgit v1.2.3