summaryrefslogtreecommitdiff
path: root/src/compiler/ast-tree.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-13 15:09:19 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-13 15:09:19 +0330
commit441519c4cf0ba7b4d63a2cd761e5553ea925de32 (patch)
tree24f0cf3a8b0bcabcd1786c7e6a7820e7d11e05c1 /src/compiler/ast-tree.h
parent142d889fc769532cae922c7ac4b0e80423d671d1 (diff)
add i64
Diffstat (limited to 'src/compiler/ast-tree.h')
-rw-r--r--src/compiler/ast-tree.h48
1 files changed, 30 insertions, 18 deletions
diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h
index 594b213..1d2f054 100644
--- a/src/compiler/ast-tree.h
+++ b/src/compiler/ast-tree.h
@@ -14,6 +14,7 @@ typedef enum AstTreeToken {
AST_TREE_TOKEN_TYPE_TYPE,
AST_TREE_TOKEN_TYPE_FUNCTION,
AST_TREE_TOKEN_TYPE_VOID,
+ AST_TREE_TOKEN_TYPE_I64,
AST_TREE_TOKEN_TYPE_U64,
AST_TREE_TOKEN_TYPE_BOOL,
@@ -21,7 +22,7 @@ typedef enum AstTreeToken {
AST_TREE_TOKEN_VARIABLE,
AST_TREE_TOKEN_VARIABLE_DEFINE,
AST_TREE_TOKEN_VALUE_VOID,
- AST_TREE_TOKEN_VALUE_U64,
+ AST_TREE_TOKEN_VALUE_INT,
AST_TREE_TOKEN_VALUE_BOOL,
AST_TREE_TOKEN_OPERATOR_ASSIGN,
@@ -50,6 +51,7 @@ typedef struct AstTree {
extern AstTree AST_TREE_TYPE_TYPE;
extern AstTree AST_TREE_VOID_TYPE;
+extern AstTree AST_TREE_I64_TYPE;
extern AstTree AST_TREE_U64_TYPE;
extern AstTree AST_TREE_VOID_VALUE;
@@ -122,6 +124,10 @@ typedef struct AstTreeHelper {
AstTreeVariables *globalDeps;
} AstTreeHelper;
+typedef struct AstTreeSetTypesHelper {
+ AstTree *lookingType;
+} AstTreeSetTypesHelper;
+
void astTreePrint(const AstTree *tree, int indent);
void astTreeRootPrint(const AstTreeRoot *root);
@@ -159,7 +165,8 @@ AstTree *astTreeParseUnaryOperator(ParserNode *parserNode,
bool astTreeParseConstant(ParserNode *parserNode, AstTreeHelper *helper);
AstTree *astTreeParseVariable(ParserNode *parserNode, AstTreeHelper *helper);
AstTree *astTreeParseIf(ParserNode *parserNode, AstTreeHelper *helper);
-AstTree *astTreeParseCurlyBracket(ParserNode *parserNode, AstTreeHelper *helper);
+AstTree *astTreeParseCurlyBracket(ParserNode *parserNode,
+ AstTreeHelper *helper);
AstTreeFunction *getFunction(AstTree *value);
bool isConst(AstTree *value);
@@ -170,22 +177,27 @@ bool isCircularDependencies(AstTreeHelper *helper, AstTreeVariable *variable,
AstTree *tree);
bool setAllTypesRoot(AstTreeRoot *root, AstTreeHelper *helper);
-bool setAllTypes(AstTree *tree, AstTreeFunction *function);
-bool setTypesFunction(AstTree *tree);
-bool setTypesPrintU64(AstTree *tree);
-bool setTypesReturn(AstTree *tree, AstTreeFunction *function);
-bool setTypesTypeFunction(AstTree *tree);
-bool setTypesFunctionCall(AstTree *tree);
-bool setTypesVariable(AstTree *tree);
-bool setTypesOperatorAssign(AstTree *tree);
-bool setTypesOperatorInfix(AstTree *tree);
-bool setTypesOperatorUnary(AstTree *tree);
-bool setTypesVariableDefine(AstTree *tree);
-bool setTypesIf(AstTree *tree,AstTreeFunction *function);
-bool setTypesScope(AstTree *tree,AstTreeFunction *function);
-
-bool setTypesAstVariable(AstTreeVariable *variable);
-bool setTypesAstInfix(AstTreeInfix *infix);
+bool setAllTypes(AstTree *tree, AstTreeSetTypesHelper helper,
+ AstTreeFunction *function);
+bool setTypesValueInt(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesFunction(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesPrintU64(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesReturn(AstTree *tree, AstTreeSetTypesHelper helper,
+ AstTreeFunction *function);
+bool setTypesTypeFunction(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesVariable(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesOperatorAssign(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesOperatorInfix(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesOperatorUnary(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesVariableDefine(AstTree *tree, AstTreeSetTypesHelper helper);
+bool setTypesIf(AstTree *tree, AstTreeSetTypesHelper helper,
+ AstTreeFunction *function);
+bool setTypesScope(AstTree *tree, AstTreeSetTypesHelper helper,
+ AstTreeFunction *function);
+
+bool setTypesAstVariable(AstTreeVariable *variable, AstTreeSetTypesHelper helper);
+bool setTypesAstInfix(AstTreeInfix *infix, AstTreeSetTypesHelper helper);
bool astTreeCleanRoot(AstTreeRoot *root);
bool astTreeClean(AstTree *tree);