From 3a1f403a0146f4717b210373167640a07f0248dd Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 18 Sep 2004 09:24:51 +0000 Subject: doc --- examples/gfcc/ResImper.gf | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'examples/gfcc/ResImper.gf') diff --git a/examples/gfcc/ResImper.gf b/examples/gfcc/ResImper.gf index d77322d75..8cdd4f8b7 100644 --- a/examples/gfcc/ResImper.gf +++ b/examples/gfcc/ResImper.gf @@ -1,13 +1,34 @@ resource ResImper = open Prelude, Precedence in { oper + PrecExp : Type = {s : PrecTerm} ; continue : Str -> SS -> SS = \s -> infixSS ";" (ss s); statement : Str -> SS = \s -> postfixSS ";" (ss s); - ex : {s : PrecTerm} -> Str = \exp -> exp.s ! p0 ; - infixL : - Prec -> Str -> {s : PrecTerm} -> {s : PrecTerm} -> {s : PrecTerm} = + ex : PrecExp -> Str = \exp -> exp.s ! p0 ; + infixL : Prec -> Str -> PrecExp -> PrecExp -> PrecExp = \p,h,x,y -> {s = mkInfixL h p x.s y.s} ; + infixN : Prec -> Str -> PrecExp -> PrecExp -> PrecExp = + \p,h,x,y -> {s = mkInfix h p x.s y.s} ; - constant : Str -> {s : PrecTerm} = \c -> {s = mkConst c} ; + constant : Str -> PrecExp = \c -> {s = mkConst c} ; + + param + Size = Zero | One | More ; + oper + nextSize : Size -> Size = \n -> case n of { + Zero => One ; + _ => More + } ; + separator : Str -> Size -> Str = \t,n -> case n of { + Zero => [] ; + _ => t + } ; + +-- for JVM + Instr : Type = {s, s3 : Str} ; -- code, labels + instr : Str -> Instr = \s -> statement s ** {s3 = []} ; ---- + instrc : Str -> Instr -> Instr = \s,i -> statement (s ++ i.s) ** {s3 = i.s3} ; ---- + binop : Str -> SS -> SS -> SS = \op, x, y -> + ss (x.s ++ y.s ++ op ++ ";") ; } \ No newline at end of file -- cgit v1.2.3