a92a2bb7303f6df3cad98fbb856c9bdf2c09781a
[lambda.git] / lambda.h
1 #ifndef LAMBDA_H
2 #define LAMBDA_H
3
4 #include <stdio.h>
5 #include <string.h>
6 #include <stdlib.h>
7
8 enum lambda_which {lambda_ident, lambda_abs, lambda_app};
9 struct lambda {
10 enum lambda_which which;
11 union {
12 char *identifier;
13 struct {
14 char *ident;
15 struct lambda *expr;
16 } abstraction;
17 struct {
18 struct lambda *expr1;
19 struct lambda *expr2;
20 } application;
21 } data;
22 };
23
24 struct decllist {
25 struct decllist *next;
26 char *ident;
27 struct lambda *value;
28 };
29
30 struct lambda *make_ident(char *);
31 struct lambda *make_abstraction(char *, struct lambda *);
32 struct lambda *make_application(struct lambda *, struct lambda *);
33 #define YYSTYPE struct lambda *
34 #endif