started direct compiler from GF to GFCC

This commit is contained in:
aarne
2007-05-15 16:35:13 +00:00
parent e857cdf485
commit 1317c89fd4
8 changed files with 516 additions and 3 deletions

View File

@@ -125,6 +125,8 @@ computeTermOpt rec gr = comp where
_ -> returnC $ P t' l
PI t l i -> comp g $ P t l -----
S t@(T _ cc) v -> do
v' <- comp g v
case v' of
@@ -258,7 +260,6 @@ computeTermOpt rec gr = comp where
-- if there are no variables, don't even go inside
cs' <- if (null g) then return cs else mapPairsM (comp g) cs
return $ T i cs'
--- this means some extra work; should implement TSh directly
TSh i cs -> comp g $ T i [(p,v) | (ps,v) <- cs, p <- ps]

View File

@@ -138,11 +138,12 @@ data Term =
| RecType [Labelling] -- ^ record type: @{ p : A ; ...}@
| R [Assign] -- ^ record: @{ p = a ; ...}@
| P Term Label -- ^ projection: @r.p@
| PI Term Label Int -- ^ index-annotated projection
| ExtR Term Term -- ^ extension: @R ** {x : A}@ (both types and terms)
| Table Term Term -- ^ table type: @P => A@
| T TInfo [Case] -- ^ table: @table {p => c ; ...}@
| TSh TInfo [Cases] -- ^ table with discjunctive patters (only back end opt)
| TSh TInfo [Cases] -- ^ table with disjunctive patters (only back end opt)
| V Type [Term] -- ^ table given as course of values: @table T [c1 ; ... ; cn]@
| S Term Term -- ^ selection: @t ! p@
| Val Type Int -- ^ parameter value number: @T # i#

View File

@@ -672,6 +672,9 @@ composOp co trm =
P t i ->
do t' <- co t
return (P t' i)
PI t i j ->
do t' <- co t
return (PI t' i j)
ExtR a c ->
do a' <- co a
c' <- co c