aboutsummaryrefslogtreecommitdiffstats
path: root/test/littlesemantics/little.h
diff options
context:
space:
mode:
authorlrg <lrg@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2006-10-20 10:38:22 +0000
committerlrg <lrg@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2006-10-20 10:38:22 +0000
commitf0198ebf9430d286ce7c9a53b703e967ce86481c (patch)
treeac069673f4a94e079bf12505c4f0a58baeea34ef /test/littlesemantics/little.h
parenteb7c8587f462adca878088ef5f610c81734efc70 (diff)
downloadcompcert-f0198ebf9430d286ce7c9a53b703e967ce86481c.tar.gz
compcert-f0198ebf9430d286ce7c9a53b703e967ce86481c.zip
interpreter for "little"
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@119 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
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);