aboutsummaryrefslogtreecommitdiffstats
path: root/test/littlesemantics/little.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/littlesemantics/little.h')
-rw-r--r--test/littlesemantics/little.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/littlesemantics/little.h b/test/littlesemantics/little.h
new file mode 100644
index 00000000..cbbd5185
--- /dev/null
+++ b/test/littlesemantics/little.h
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <string.h>
+
+typedef struct term {
+ short select;
+ union {
+ struct term **children;
+ int int_val;
+ char *string_val;
+ } term_body;
+} term;
+
+term *true();
+term *false();
+term *numeral(int i);
+term *variable(char *s);
+char *variable_name(term *t);
+int numeral_value(term *t);
+term *variable_list(term *i1, term *i2);
+term *greater(term *i1, term *i2);
+term *addition(term *i1, term *i2);
+term *skip();
+term *assignment(term *i1, term *i2);
+term *sequence(term *i1, term *i2);
+term *term_while(term *i1, term *i2);
+term *variable_value(term *i1, term *i2);
+
+term *child(term *t, int rank);
+term *lookup(term *env, char *var);
+term *update(term *env, char *var_name, term *val);
+term *evaluate(term *env, term *exp);
+term *execute(term *env, term *inst);