diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-25 19:47:29 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-25 19:47:29 +0330 |
commit | c409b8aaf6b6f63bd68a3356e146ab80b2ec8c4b (patch) | |
tree | 65ea5801fd910fc6bcff3f2e8f06b5fd7d249c78 /src/compiler/tree_parser/tree_parser.h | |
parent | f79290084948f3cf140395c270c07cf29ca58e8d (diff) |
fixed multiple variable definition bug
tried to implement import
Diffstat (limited to 'src/compiler/tree_parser/tree_parser.h')
-rw-r--r-- | src/compiler/tree_parser/tree_parser.h | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/src/compiler/tree_parser/tree_parser.h b/src/compiler/tree_parser/tree_parser.h index 0ee783f..1eeb63d 100644 --- a/src/compiler/tree_parser/tree_parser.h +++ b/src/compiler/tree_parser/tree_parser.h @@ -2,10 +2,9 @@ #include <compiler/parser/parser.h> -#include "utils/types.h" - typedef enum TreeToken { TREE_TOKEN_NONE = 0, + TREE_TOKEN_ROOT, TREE_TOKEN_GLOBAL_SCOPE, TREE_TOKEN_LOCAL_SCOPE, TREE_TOKEN_FUNCTION_CALL, @@ -65,49 +64,55 @@ typedef struct TreeFunctionMetadata { typedef SizedString TreeStringValueMetadata; -extern void _printParsedTreeNode(const ParsedTree *parsedTree,int indent); +extern void _printParsedTreeNode(const ParsedTree *parsedTree, int indent); extern void printParsedTreeNode(const ParsedTree *parsedTree); extern void deleteParsedTree(ParsedTree *parsedTree); -extern ParsedTree *treeParser(SourceCode code); -extern ParsedTree *_treeParser(const ParsedNode *node, SourceCode code); +extern ParsedTree *treeParser(SourceCode *code); +extern ParsedTree *_treeParser(const ParsedNode *node, SourceCode *code); -extern ParsedTree *treeParseNode(const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], +extern ParsedTree *treeParseNode(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); -extern ParsedTree *treeParseRoot(const ParsedNode *root, SourceCode code); -extern ParsedTree *treeParseLocalScope(const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], +extern ParsedTree *treeParseRoot(const ParsedNode *root, SourceCode *code); +extern ParsedTree *treeParseLocalScope(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); extern TreeDefineVariableMetadata *treeParseDefineVariable( - ParsedTree *tree, const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], size_t scopes_size); + ParsedTree *tree, const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); extern TreeDefineVariableMetadata *getVariable( - const char *strBegin, const char *strEnd, SourceCode code, - const TreeScopeMetadata *scopes[], size_t scopes_size); -extern ParsedTree *treeParseIdentifier(const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], + const char *strBegin, const char *strEnd, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); +extern ParsedTree *treeParseIdentifier(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); extern ParsedTree *treeParseFunctionCall(const ParsedNode *node, - SourceCode code, - const TreeScopeMetadata *scopes[], + SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); extern ParsedTree *treeParseValueString(const ParsedNode *node, - SourceCode code); + SourceCode *code); extern ParsedTree *treeParseVariableDefinition( - const ParsedNode *node, SourceCode code, const TreeScopeMetadata *scopes[], + const ParsedNode *node, SourceCode *code, TreeScopeMetadata *scopes[], size_t scopes_size, TreeToken token); -extern ParsedTree *treeParseStruct(const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], +extern ParsedTree *treeParseStruct(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); -extern ParsedTree *treeParseFunction(const ParsedNode *node, SourceCode code, - const TreeScopeMetadata *scopes[], +extern ParsedTree *treeParseFunction(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], size_t scopes_size); +extern ParsedTree *treeParseImport(const ParsedNode *node, SourceCode *code, + TreeScopeMetadata *scopes[], + size_t scopes_size); extern TypeId getTreeExpressionType(ParsedTree *const tree); extern TypeId getType(const TreeDefineVariableMetadata *define); extern bool isType(ParsedTree *const tree); -extern SizedString *nodeToString(ParsedNode const *tree, SourceCode code); +extern SizedString *nodeToString(ParsedNode const *node, SourceCode *code); + +extern void pushVariableToScope(TreeScopeMetadata *scope,TreeDefineVariableMetadata *variable); +extern void pushLineToScope(TreeScopeMetadata *scope,ParsedTree *line); |