skopy/lib/include/node.h

37 lines
881 B
C
Raw Normal View History

2024-03-31 21:10:56 +00:00
#ifndef SK_NODE_H
#define SK_NODE_H
#include "commons.h"
#define NODE_KIND(G) \
G(NODE_ROOT), \
2024-03-31 23:32:47 +00:00
G(NODE_INT), \
G(NODE_ADD), G(NODE_SUB), G(NODE_MUL),\
G(NODE_DIV), G(NODE_POW), G(NODE_MOD),\
2024-04-01 12:00:06 +00:00
G(NODE_USUB), G(NODE_ASSERT_EQ), \
G(NODE_BOOL), G(NODE_AND), G(NODE_OR), \
2024-04-01 21:33:43 +00:00
G(NODE_NOT), G(NODE_FLOAT), G(NODE_STRING), \
G(NODE_LT), G(NODE_LE), G(NODE_GT), G(NODE_GE), \
2024-04-02 15:33:31 +00:00
G(NODE_EQUAL), G(NODE_NOT_EQUAL), G(NODE_VAR_DECL), \
G(NODE_CONST_DECL), G(NODE_IDENT), G(NODE_ASSIGN), \
2024-04-02 17:16:22 +00:00
G(NODE_BLOCK), G(NODE_IF)
2024-03-31 21:10:56 +00:00
SK_ENUM_H(NodeKind, NODE_KIND);
struct node
{
NodeKind kind;
struct vec children;
struct token* token;
};
void node_init(struct node* self,
NodeKind kind,
struct token* token);
void node_free(struct node* self);
void node_push_new_child(struct node* self, struct node* child);
void node_str(struct node* self, struct str* dest);
#endif