blob: f7be3d5cd811cb1c7c4a1b277d71605d63859e06 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef AST_H
#define AST_H
#include <stdbool.h>
typedef struct AST_STRUCT {
enum {
/* complex types */
AST_PAIR,
AST_SYMBOL,
/* self evaluating types */
AST_STRING,
AST_BOOL,
AST_INT,
AST_FLOAT,
AST_FUNCTION,
} type;
/* For functions, the car will be a list of variables, and the cdr will be the
* expression */
struct AST_STRUCT *car;
struct AST_STRUCT *cdr;
char *string_value;
int int_value;
double float_value;
bool bool_value;
} ast_t;
ast_t *init_ast_string(char *value);
ast_t *init_ast_int(int value);
ast_t *init_ast_float(double value);
ast_t *init_ast_pair(ast_t *car, ast_t *cdr);
ast_t *init_ast_bool(bool value);
ast_t *init_ast_symbol(char *value);
ast_t *init_ast_function(ast_t *car, ast_t *cdr);
#endif
|