summaryrefslogtreecommitdiff
path: root/transfer/examples/exp.tr
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-25 16:36:19 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-25 16:36:19 +0000
commitdbe8e61acc616b8f5ac07e8df89eb98a7997c29d (patch)
tree6e379f18986fc60f5606e023def46abdf770dca5 /transfer/examples/exp.tr
parentfe2731e5f8e301b5a0169bf8b667bb6c13bae80b (diff)
Move transfer into the GF repo.
Diffstat (limited to 'transfer/examples/exp.tr')
-rw-r--r--transfer/examples/exp.tr31
1 files changed, 31 insertions, 0 deletions
diff --git a/transfer/examples/exp.tr b/transfer/examples/exp.tr
new file mode 100644
index 000000000..b7202fedf
--- /dev/null
+++ b/transfer/examples/exp.tr
@@ -0,0 +1,31 @@
+data Stm : Type where {} ;
+data Exp : Type where {} ;
+data Var : Type where {} ;
+data Typ : Type where {} ;
+
+data ListStm : Type where {} ;
+
+data Tree : Type -> Type where {
+ SDecl : Tree Typ -> Tree Var -> Tree Stm ;
+ SAss : Tree Var -> Tree Exp -> Tree Stm ;
+ SBlock : Tree ListStm -> Tree Stm ;
+ EAdd : Tree Exp -> Tree Exp -> Tree Exp ;
+ EStm : Tree Stm -> Tree Exp ;
+ EVar : Tree Var -> Tree Exp ;
+ EInt : Integer -> Tree Exp ;
+ V : String -> Tree Var ;
+ TInt : Tree Typ ;
+ TFloat : Tree Typ ;
+
+ NilStm : Tree ListStm ;
+ ConsStm : Tree Stm -> Tree ListStm -> Tree ListStm ;
+ } ;
+
+derive composOp Tree ;
+
+rename : (String -> String) -> (C : Type) -> Tree C -> Tree C;
+rename f C t = case t of {
+ V x -> V (f x) ;
+ _ -> composOp_Tree C (rename f) t;
+ } ;
+