From e4748e998453b979af46983a079f2ec3d307ada4 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 2 Mar 2010 19:10:56 +0000 Subject: restored gfcc example (GF C compiler) --- examples/gfcc/Imper.gf | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 examples/gfcc/Imper.gf (limited to 'examples/gfcc/Imper.gf') diff --git a/examples/gfcc/Imper.gf b/examples/gfcc/Imper.gf new file mode 100644 index 000000000..a207759b7 --- /dev/null +++ b/examples/gfcc/Imper.gf @@ -0,0 +1,53 @@ +abstract Imper = { + + flags startcat = Program ; + + cat + Program ; + Rec ListTyp ; + Typ ; + IsNum Typ ; + ListTyp ; + Fun ListTyp Typ ; + Stm ; + Exp Typ ; + Var Typ ; + ListExp ListTyp ; + + fun + Empty : Program ; + Funct : (AS : ListTyp) -> (V : Typ) -> + (Fun AS V -> Rec AS) -> Program ; + FunctNil : (V : Typ) -> + Stm -> (Fun NilTyp V -> Program) -> Program ; + RecOne : (A : Typ) -> (Var A -> Stm) -> Program -> Rec (ConsTyp A NilTyp) ; + RecCons : (A : Typ) -> (AS : ListTyp) -> + (Var A -> Rec AS) -> Program -> Rec (ConsTyp A AS) ; + + Decl : (A : Typ) -> (Var A -> Stm) -> Stm ; + Assign : (A : Typ) -> Var A -> Exp A -> Stm -> Stm ; + While : Exp TInt -> Stm -> Stm -> Stm ; + IfElse : Exp TInt -> Stm -> Stm -> Stm -> Stm ; + Block : Stm -> Stm -> Stm ; + Printf : (A : Typ) -> Exp A -> Stm -> Stm ; + Return : (A : Typ) -> Exp A -> Stm ; + Returnv : Stm ; + End : Stm ; + + EVar : (A : Typ) -> Var A -> Exp A ; + EInt : Int -> Exp TInt ; + EFloat : Int -> Int -> Exp TFloat ; + ELt : (n : Typ) -> IsNum n -> Exp n -> Exp n -> Exp TInt ; + EAdd, EMul, ESub : (n : Typ) -> IsNum n -> Exp n -> Exp n -> Exp n ; + EAppNil : (V : Typ) -> Fun NilTyp V -> Exp V ; + EApp : (AS : ListTyp) -> (V : Typ) -> Fun AS V -> ListExp AS -> Exp V ; + + TInt, TFloat : Typ ; + isNumInt : IsNum TInt ; isNumFloat : IsNum TFloat ; + NilTyp : ListTyp ; + ConsTyp : Typ -> ListTyp -> ListTyp ; + + OneExp : (A : Typ) -> Exp A -> ListExp (ConsTyp A NilTyp) ; + ConsExp : (A : Typ) -> (AS : ListTyp) -> + Exp A -> ListExp AS -> ListExp (ConsTyp A AS) ; +} -- cgit v1.2.3