diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-12-08 07:15:19 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-12-08 07:15:19 +0000 |
| commit | de8bea8d692617d0028f9c2f5716f1e303490ff2 (patch) | |
| tree | 98c36bc7f0ef1dd2d69c2a9807d1fe13d6c38fdc /src/GF/Compile/GrammarToGFCC.hs | |
| parent | cbb495f5d991a5e3825895ab10a69af7654e8055 (diff) | |
data structures for param values with number, preparing optimized pattern matching in grammar compilation
Diffstat (limited to 'src/GF/Compile/GrammarToGFCC.hs')
| -rw-r--r-- | src/GF/Compile/GrammarToGFCC.hs | 20 |
1 files changed, 1 insertions, 19 deletions
diff --git a/src/GF/Compile/GrammarToGFCC.hs b/src/GF/Compile/GrammarToGFCC.hs index 539e5834c..27081ec94 100644 --- a/src/GF/Compile/GrammarToGFCC.hs +++ b/src/GF/Compile/GrammarToGFCC.hs @@ -445,25 +445,6 @@ term2term fun cgr env@(labels,untyps,typs) tr = case tr of --- this is mainly needed for parameter record projections ---- was: comp t = errVal t $ Compute.computeConcreteRec cgr t - compt t = case t of - T (TComp typ) ts -> comp $ V typ (map (comp . snd) ts) ---- should... - T (TTyped typ) ts -> comp $ V typ (map (comp . snd) ts) ---- should - V typ ts -> V typ (map comp ts) - S tb (FV ts) -> FV $ map (comp . S tb) ts - S tb@(V typ ts) v0 -> err error id $ do - let v = comp v0 - let mv1 = Map.lookup v untyps - case mv1 of - Just v0 -> - let v1 = fromInteger v0 - v2 = v1 --if length ts > v1 then v1 - --else trace ("DEBUG" +++ show v1 +++ "of" +++ show ts) 0 - in return $ (comp . (ts !!)) v2 - _ -> return (S (comp tb) v) - - R r -> R [(l,(ty,comp t)) | (l,(ty,t)) <- r] - P (R r) l -> maybe t (comp . snd) $ lookup l r - _ -> GM.composSafeOp comp t doVar :: Term -> STM [((Type,[Term]),(Term,Term))] Term doVar tr = case getLab tr of @@ -511,6 +492,7 @@ term2term fun cgr env@(labels,untyps,typs) tr = case tr of _ | tr == x -> t _ -> GM.composSafeOp (mkBranch x t) tr + valNum (Val _ _ i) = EInt $ toInteger i valNum tr = maybe (valNumFV $ tryFV tr) EInt $ Map.lookup tr untyps where tryFV tr = case GM.appForm tr of |
