#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <stdbool.h>
enum lambda_which {lambda_ident, lambda_abs, lambda_app};
struct lambda {
enum lambda_which which;
union {
- char *identifier;
struct {
char *ident;
+ struct lambda *binding;
+ } identifier;
+ struct {
+ char *ident;
+ bool strict;
struct lambda *expr;
} abstraction;
struct {
} data;
};
+struct decllist {
+ struct decllist *next;
+ char *ident;
+ struct lambda *value;
+};
+
+struct lambda *make_lambda();
struct lambda *make_ident(char *);
-struct lambda *make_abstraction(char *, struct lambda *);
+struct lambda *make_abstraction(char *, bool, struct lambda *);
struct lambda *make_application(struct lambda *, struct lambda *);
+struct lambda *make_numeral(unsigned int i);
+struct lambda *make_bool(bool b);
#define YYSTYPE struct lambda *
#endif