Files
quip/include/backend/ast.h
2026-03-21 19:03:05 -04:00

57 lines
1.0 KiB
C

/*
* Copyright (c) 2026, Mirocom Laboratories
* Provided under the BSD-3 clause
*
* Abstract:
* This file provides abstract syntax tree related
* definitions.
* Author:
* Ian M. Moffett <ian@mirocom.org>
*/
#ifndef BACKEND_AST_H
#define BACKEND_AST_H 1
#include <stdint.h>
#include <stddef.h>
#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 */