aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/tree_parser/tree_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/tree_parser/tree_parser.h
parentf79290084948f3cf140395c270c07cf29ca58e8d (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.h55
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);