This commit is contained in:
2024-12-22 22:40:01 +02:00
parent db35aa7722
commit a9c4b5c7ab
7 changed files with 253 additions and 205 deletions

40
ast.h
View File

@@ -486,7 +486,8 @@ typedef uint32_t AstNodeIndex;
typedef uint32_t AstIndex;
typedef struct {
AstIndex lhs, rhs;
AstIndex lhs;
AstIndex rhs;
} AstData;
typedef struct {
@@ -497,22 +498,35 @@ typedef struct {
AstData* datas;
} AstNodeList;
typedef struct {
uint32_t len;
uint32_t cap;
TokenizerTag* tags;
AstIndex* starts;
} AstTokenList;
typedef struct {
uint32_t len;
uint32_t cap;
AstNodeIndex* arr;
} AstExtraData;
typedef struct {
const char* source;
const uint32_t source_len;
struct {
uint32_t len;
TokenizerTag* tags;
AstIndex* starts;
} tokens;
uint32_t source_len;
AstTokenList tokens;
AstNodeList nodes;
AstExtraData extra_data;
} Ast;
AstNodeIndex* extra_data;
uint32_t extra_data_len;
} ast;
Ast astParse(const char* source, uint32_t len);
ast astParse(const char* source, uint32_t len);
// MultiArrayList
void astNodeListEnsureCapacity(AstNodeList* list, uint32_t additional);
void astTokenListEnsureCapacity(AstTokenList* list, uint32_t additional);
void astNodeListAppend(AstNodeList* list, AstNodeTag tag,
AstTokenIndex main_token, AstData data);
void astTokenListAppend(AstTokenList* list, TokenizerTag tag, AstIndex start);
#endif