57 lines
1.0 KiB
C
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 */
|