lang_experiment/ast.h
2024-07-06 13:22:56 -04:00

40 lines
663 B
C

#pragma once
#include "hashtab.h"
enum {
AST_DATTR_COMPTIME=0x1,
AST_DATTR_CONST=0x2,
AST_DATTR_VOLATILE=0x4,
AST_DATTR_ATOMIC=0x8,
AST_DATTR_STATIC=0x10,
AST_DATTR_THREAD_LOCAL=0x20,
AST_DATTR_COMPLEX=0x40,
};
typedef struct {
uint32_t attrs;
enum {
AST_DTYPE_VOID,
AST_DTYPE_SIGNED,
AST_DTYPE_UNSIGNED,
AST_DTYPE_FLOAT,
AST_DTYPE_STRUCT,
AST_DTYPE_UNION,
AST_DTYPE_FUNC,
AST_DTYPE_STR,
} fmt;
size_t nptrs;
size_t nbytes;
} ast_dtype_t;
typedef struct ast_s {
size_t ndtypes;
ast_dtype_t * dtypes;
hashtab_t dtypes_ht;
} ast_t;