aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/parser/parser.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2024-09-25 19:47:29 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2024-09-25 19:47:29 +0330
commitc409b8aaf6b6f63bd68a3356e146ab80b2ec8c4b (patch)
tree65ea5801fd910fc6bcff3f2e8f06b5fd7d249c78 /src/compiler/parser/parser.h
parentf79290084948f3cf140395c270c07cf29ca58e8d (diff)
fixed multiple variable definition bug
tried to implement import
Diffstat (limited to 'src/compiler/parser/parser.h')
-rw-r--r--src/compiler/parser/parser.h36
1 files changed, 19 insertions, 17 deletions
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);