change printing
[lambda.git] / lambda.h
index 2495f9d..d9921d6 100644 (file)
--- a/lambda.h
+++ b/lambda.h
@@ -4,14 +4,19 @@
 #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 {
@@ -21,8 +26,17 @@ struct lambda {
        } 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