diff --git a/src/cb2c/main.c b/src/cb2c/main.c index 54326f3..1b979b3 100644 --- a/src/cb2c/main.c +++ b/src/cb2c/main.c @@ -2,7 +2,7 @@ int main(){ init_keywordsSearchTree(); - + printf("keywordsSearchTree: %p\n", keywordsSearchTree); STNode_free(keywordsSearchTree); return 0; } \ No newline at end of file diff --git a/src/lexer/my_type_ext.h b/src/lexer/my_type_ext.h index f47ccd9..792d41e 100644 --- a/src/lexer/my_type_ext.h +++ b/src/lexer/my_type_ext.h @@ -4,5 +4,6 @@ typedef enum lexer_type{ - AutoarrTokenPtr=my_type_last+1 + TokenPtr=my_type_last+1, + AutoarrTokenPtr } lexer_type; \ No newline at end of file diff --git a/src/lexer/tokens.c b/src/lexer/tokens.c index 4c0b2d0..ef7820f 100644 --- a/src/lexer/tokens.c +++ b/src/lexer/tokens.c @@ -2,11 +2,13 @@ Autoarr_define(Token) + +STNode* keywordsSearchTree=NULL; void init_keywordsSearchTree(){ keywordsSearchTree=STNode_create(); for(TokenId keywordId=0; keywordId<=tok_typeof; keywordId++){ - Token keyword=default_tokens[keywordId]; - Unitype fake_uni=*(Unitype*)(void*)&keyword; - ST_push(keywordsSearchTree, keyword.value, fake_uni); + const Token* keywordptr=&default_tokens[keywordId]; + Unitype uni=UniPtr(Int64, keywordptr); + ST_push(keywordsSearchTree, keywordptr->value, uni); } } diff --git a/src/lexer/tokens.h b/src/lexer/tokens.h index 7d01fc1..c61f384 100644 --- a/src/lexer/tokens.h +++ b/src/lexer/tokens.h @@ -105,7 +105,7 @@ typedef struct Token{ TokenId id; } Token; -static STNode* keywordsSearchTree; +extern STNode* keywordsSearchTree; // dont forget to free it void init_keywordsSearchTree();