From c409b8aaf6b6f63bd68a3356e146ab80b2ec8c4b Mon Sep 17 00:00:00 2001 From: A404M Date: Wed, 25 Sep 2024 19:47:29 +0330 Subject: fixed multiple variable definition bug tried to implement import --- src/compiler/parser/parser.h | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'src/compiler/parser/parser.h') diff --git a/src/compiler/parser/parser.h b/src/compiler/parser/parser.h index 24c6c5d..234264b 100644 --- a/src/compiler/parser/parser.h +++ b/src/compiler/parser/parser.h @@ -17,6 +17,7 @@ typedef enum ParsedToken { PARSED_TOKEN_FUNCTION, PARSED_TOKEN_FUNCTION_PARAMS, PARSED_TOKEN_CODE_BODY, + PARSED_TOKEN_IMPORT, } ParsedToken; extern const char *PARSED_TOKEN_STRINGS[]; @@ -61,6 +62,7 @@ typedef struct ParserFunctionMetadata { ParsedNode *type; ParsedNode *body; } ParserFunctionMetadata; +typedef ParsedNode ParserImportMetadata; extern ParsedNode *newParsedNode(char const *strBegin, char const *strEnd, ParsedToken token, void *metadata, @@ -71,50 +73,50 @@ extern ParsedNode *getUntilCommonFather(ParsedNode *parsedNode, ParsedNode *parent); extern void deleteParsedNode(ParsedNode *parsedNode); -extern ParsedNode *parser(SourceCode code); -extern ParsedNode *_parser(Nodes lexedNodes, SourceCode code); +extern ParsedNode *parser(SourceCode *code,size_t sourceIndex); +extern ParsedNode *_parser(Nodes lexedNodes, SourceCode *code); extern ParserScopeMetadata *parserScope( Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - bool (*isAllowed)(ParsedToken token, bool isLast), SourceCode code); + bool (*isAllowed)(ParsedToken token, bool isLast), SourceCode *code); extern ParserScopeMetadata *parserScopeCode(Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParserScopeMetadata *parserScopeParenthesis(Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParserScopeMetadata *parserScopeFunctionCall(Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParserScopeMetadata *parserScopeFunctionParam(Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParserScopeMetadata *parserScopeStruct(Node *nodesBegin, Node *nodesEnd, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParsedNode *parseNode(Node *nodesBegin, Node *nodesEnd, Node *node, - ParsedNode *parent, SourceCode code); + ParsedNode *parent, SourceCode *code); extern ParsedNode *parseParenthesis(Node *nodesBegin, Node *nodesEnd, Node *node, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParsedNode *parseCurly(Node *nodesBegin, Node *node, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParsedNode *parseString(Node *node, ParsedNode *parent); extern ParsedNode *parseIdentifier(Node *node, ParsedNode *parent); extern ParsedNode *parseEOL(Node *nodesBegin, Node *node, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParsedNode *parseVariable(Node *nodesBegin, Node *nodesEnd, Node *node, - ParsedNode *parent, SourceCode code); + ParsedNode *parent, SourceCode *code); extern ParsedNode *parseComma(Node *nodesBegin, Node *nodesEnd, Node *node, - ParsedNode *parent, SourceCode code); + ParsedNode *parent, SourceCode *code); extern ParsedNode *parseStruct(Node *nodesEnd, Node *node, ParsedNode *parent, - SourceCode code); + SourceCode *code); extern ParsedNode *parseFunction(Node *nodesBegin, Node *nodesEnd, Node *node, - ParsedNode *parent, SourceCode code); + ParsedNode *parent, SourceCode *code); extern ParsedNode *parseImport(Node *nodesEnd, Node *node, ParsedNode *parent, - SourceCode code); + SourceCode *code); -- cgit v1.2.3