diff options
| author | aarne <unknown> | 2004-12-20 07:57:05 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2004-12-20 07:57:05 +0000 |
| commit | 6e1f41b26af8154033fda32c573aba56d7cb89fb (patch) | |
| tree | cdfd17dd3a1444f3a921cadc6d0a141178767819 /examples/gfcc/ResImper.gf | |
| parent | 8caa3ed737900c0fc004b24720f909244d17dd59 (diff) | |
gfcc in Types
Diffstat (limited to 'examples/gfcc/ResImper.gf')
| -rw-r--r-- | examples/gfcc/ResImper.gf | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/examples/gfcc/ResImper.gf b/examples/gfcc/ResImper.gf index 10454e4df..57cdf9434 100644 --- a/examples/gfcc/ResImper.gf +++ b/examples/gfcc/ResImper.gf @@ -61,6 +61,14 @@ resource ResImper = open Predef in { -- operations for JVM + param TypIdent = TIInt | TIFloat ; -- to be continued + + oper + typInstr : Str -> TypIdent -> Str = \instr,t -> case t of { + TIInt => "i" + instr ; + TIFloat => "f" + instr + } ; + Instr : Type = {s,s2,s3 : Str} ; -- code, variables, labels instr : Str -> Instr = \s -> statement s ** {s2,s3 = []} ; @@ -72,6 +80,6 @@ resource ResImper = open Predef in { ss (s ++ ";" ++ i.s) ** {s2 = v ++ i.s2 ; s3 = i.s3} ; binop : Str -> SS -> SS -> SS = \op, x, y -> ss (x.s ++ y.s ++ op ++ ";") ; - binopt : Str -> SS -> SS -> SS -> SS = \op, t -> - binop (t.s ++ op) ; + binopt : Str -> TypIdent -> SS -> SS -> SS = \op, t -> + binop (typInstr op t) ; } |
