2022-02-13 17:40:54 +01:00
|
|
|
#ifndef IR_H
|
|
|
|
#define IR_H
|
|
|
|
|
|
|
|
/* This is the tree node structure */
|
|
|
|
typedef struct n {
|
|
|
|
node_index_t type; // Type of the node
|
|
|
|
void *data; // Pointer to associated data
|
|
|
|
struct s *entry; // Pointer to symtab entry (ignore for now)
|
|
|
|
uint64_t n_children; // Number of child nodes
|
|
|
|
struct n **children; // Array of n_children child nodes
|
|
|
|
} node_t;
|
|
|
|
|
|
|
|
/**Export the initializer function, it is needed by the parser
|
|
|
|
* @param *nd node to initialize
|
|
|
|
* @param type type of node (see nodetype.h)
|
|
|
|
* @param *data associated data. Declared void to allow any type
|
|
|
|
* @param n_children number of children
|
|
|
|
* @param ... variable argument list of child nodes (node_t *)
|
2022-02-18 17:01:37 +01:00
|
|
|
*
|
|
|
|
* @return Pointer to the initialized node
|
2022-02-13 17:40:54 +01:00
|
|
|
* */
|
2022-02-18 17:01:37 +01:00
|
|
|
node_t* node_init (
|
2022-02-13 17:40:54 +01:00
|
|
|
node_t *nd, node_index_t type, void *data, uint64_t n_children, ...
|
|
|
|
);
|
|
|
|
#endif
|