wraith-lang/src/identcheck.h

44 lines
917 B
C
Raw Normal View History

2021-05-07 00:16:10 +00:00
// Validates identifier usage in an AST.
#ifndef WRAITH_IDENTCHECK_H
#define WRAITH_IDENTCHECK_H
#include <stdint.h>
#include "ast.h"
typedef enum NodeType {
UnorderedScope,
OrderedScope,
2021-05-07 00:16:10 +00:00
Struct,
Function,
Variable
} NodeType;
typedef struct IdNode {
NodeType type;
char *name;
2021-05-08 00:49:35 +00:00
TypeTag *typeTag;
struct IdNode *parent;
2021-05-07 00:16:10 +00:00
struct IdNode **children;
uint32_t childCount;
uint32_t childCapacity;
} IdNode;
typedef struct IdStatus {
enum StatusCode {
Valid,
} StatusCode;
} IdStatus;
IdNode* MakeIdTree(Node *astNode, IdNode *parent);
2021-05-08 21:51:15 +00:00
void PrintIdNode(IdNode *node);
2021-05-07 00:16:10 +00:00
void PrintIdTree(IdNode *tree, uint32_t tabCount);
int PrintAncestors(IdNode *node);
IdNode* LookdownId(IdNode *root, NodeType targetType, char *targetName);
IdNode* LookupId(IdNode *node, IdNode *prev, char* target);
2021-05-07 00:16:10 +00:00
//IdStatus CheckIds(Node *root);
#endif /* WRAITH_IDENTCHECK_H */