diff options
| author | aarne <unknown> | 2004-09-19 20:27:01 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2004-09-19 20:27:01 +0000 |
| commit | df4cbb482f0546b884eb210d825c794d14f82712 (patch) | |
| tree | cc8ecc187cdd2ce07926308ee1656a1fa3a213b7 /examples/gfcc/Imper.gf | |
| parent | 3a1f403a0146f4717b210373167640a07f0248dd (diff) | |
report
Diffstat (limited to 'examples/gfcc/Imper.gf')
| -rw-r--r-- | examples/gfcc/Imper.gf | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/examples/gfcc/Imper.gf b/examples/gfcc/Imper.gf index fca632cc4..30739144c 100644 --- a/examples/gfcc/Imper.gf +++ b/examples/gfcc/Imper.gf @@ -1,16 +1,30 @@ abstract Imper = { cat - Stm ; + Program ; Typ ; + ListTyp ; + Fun ListTyp Typ ; + Body ListTyp ; + Stm ; Exp Typ ; Var Typ ; + ListExp ListTyp ; fun + Empty : Program ; + Funct : (AS : ListTyp) -> (V : Typ) -> + (Body AS) -> (Fun AS V -> Program) -> Program ; + + BodyNil : Stm -> Body NilTyp ; + BodyCons : (A : Typ) -> (AS : ListTyp) -> + (Var A -> Body AS) -> Body (ConsTyp A AS) ; + Decl : (A : Typ) -> (Var A -> Stm) -> Stm ; Assign : (A : Typ) -> Var A -> Exp A -> Stm -> Stm ; Return : (A : Typ) -> Exp A -> Stm ; While : Exp TInt -> Stm -> Stm -> Stm ; + IfElse : Exp TInt -> Stm -> Stm -> Stm -> Stm ; Block : Stm -> Stm -> Stm ; End : Stm ; @@ -19,37 +33,22 @@ abstract Imper = { EFloat : Int -> Int -> Exp TFloat ; EAddI : Exp TInt -> Exp TInt -> Exp TInt ; EAddF : Exp TFloat -> Exp TFloat -> Exp TFloat ; + ESubI : Exp TInt -> Exp TInt -> Exp TInt ; + ESubF : Exp TFloat -> Exp TFloat -> Exp TFloat ; EMulI : Exp TInt -> Exp TInt -> Exp TInt ; EMulF : Exp TFloat -> Exp TFloat -> Exp TFloat ; ELtI : Exp TInt -> Exp TInt -> Exp TInt ; ELtF : Exp TFloat -> Exp TFloat -> Exp TInt ; + EApp : (AS : ListTyp) -> (V : Typ) -> Fun AS V -> ListExp AS -> Exp V ; TInt : Typ ; TFloat : Typ ; - cat - Program ; - Typs ; - Fun Typs Typ ; - Body Typs ; - Exps Typs ; - - fun - Empty : Program ; - Funct : (AS : Typs) -> (V : Typ) -> - (Body AS) -> (Fun V AS -> Program) -> Program ; - - NilTyp : Typs ; - ConsTyp : Typ -> Typs -> Typs ; - - BodyNil : Stm -> Body NilTyp ; - BodyCons : (A : Typ) -> (AS : Typs) -> - (Var A -> Body AS) -> Body (ConsTyp A AS) ; - - EApp : (AS : Typs) -> (V : Typ) -> Fun AS V -> Exps AS -> Exp V ; + NilTyp : ListTyp ; + ConsTyp : Typ -> ListTyp -> ListTyp ; - NilExp : Exps NilTyp ; - ConsExp : (A : Typ) -> (AS : Typs) -> - Exp A -> Exps AS -> Exps (ConsExp A AS) ; + NilExp : ListExp NilTyp ; + ConsExp : (A : Typ) -> (AS : ListTyp) -> + Exp A -> ListExp AS -> ListExp (ConsExp A AS) ; } |
