/* * Copyright (c) 2026, Mirocom Laboratories * Provided under the BSD-3 clause * * Abstract: * This file provides abstract syntax tree related * definitions. * Author: * Ian M. Moffett */ #ifndef BACKEND_AST_H #define BACKEND_AST_H 1 #include #include #include "common/state.h" /* * Represents an abstract syntax tree * * @AST_TYPE_NONE: This node has node associated type */ typedef enum { AST_TYPE_NONE, AST_TYPE_CC, } ast_type_t; /* * Represents an element within the source * * @left: Left node * @right: Right node */ struct ast_node { struct ast_node *left; struct ast_node *right; union { const char *s; void *data; }; }; /* * Allocate an AST node of a specific type * * @state: Quip state machine * @type: AST node type * @res: AST node result is written here * * Returns zero on success * */ int ast_node_alloc(struct quip_state *state, ast_type_t type, struct ast_node **res); #endif /* !BACKEND_AST_H */