// Validates identifier usage in an AST. #ifndef WRAITH_IDENTCHECK_H #define WRAITH_IDENTCHECK_H #include #include "ast.h" typedef enum NodeType { LexicalScope, Struct, Function, Variable } NodeType; typedef struct IdNode { NodeType type; char *name; struct IdNode *parent; struct IdNode **children; uint32_t childCount; uint32_t childCapacity; } IdNode; typedef struct IdStatus { enum StatusCode { Valid, } StatusCode; } IdStatus; IdNode* FindId(IdNode *root, NodeType targetType, char *targetName); IdNode* MakeIdTree(Node *astNode, IdNode *parent); void PrintIdTree(IdNode *tree, uint32_t tabCount); int PrintAncestors(IdNode *node); //IdStatus CheckIds(Node *root); #endif /* WRAITH_IDENTCHECK_H */