summaryrefslogtreecommitdiff
path: root/src/GF/Conversion/SimpleToMCFG
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2006-06-01 10:26:49 +0000
committerkr.angelov <kr.angelov@gmail.com>2006-06-01 10:26:49 +0000
commit496f1fc8767f9d8ce1bb69b6e6460c2b7b7dd4b4 (patch)
tree744205609902f1dde62a9aca91457da65e02deef /src/GF/Conversion/SimpleToMCFG
parentf7d8cdfc2ec43984979a6c7dd1eacc221dd779ec (diff)
The SLinType type is changed so that you don't have to use enumerateTerms each time when you want to know the possible table arguments
Diffstat (limited to 'src/GF/Conversion/SimpleToMCFG')
-rw-r--r--src/GF/Conversion/SimpleToMCFG/Nondet.hs16
-rw-r--r--src/GF/Conversion/SimpleToMCFG/Strict.hs2
2 files changed, 8 insertions, 10 deletions
diff --git a/src/GF/Conversion/SimpleToMCFG/Nondet.hs b/src/GF/Conversion/SimpleToMCFG/Nondet.hs
index 514f2b382..d6ff052f5 100644
--- a/src/GF/Conversion/SimpleToMCFG/Nondet.hs
+++ b/src/GF/Conversion/SimpleToMCFG/Nondet.hs
@@ -136,15 +136,13 @@ simplifyCase (pat, term) = liftM2 (,) (simplifyTerm pat) (simplifyTerm term)
reduceTerm :: SLinType -> SPath -> STerm -> CnvMonad ()
--reduceTerm ctype path (Variants terms)
-- = member terms >>= reduceTerm ctype path
-reduceTerm (StrT) path term = updateLin (path, term)
-reduceTerm (ConT _ _) path term = do pat <- expandTerm term
- updateHead (path, pat)
+reduceTerm (StrT) path term = updateLin (path, term)
+reduceTerm (ConT _) path term = do pat <- expandTerm term
+ updateHead (path, pat)
reduceTerm (RecT rtype) path term
- = sequence_ [ reduceTerm ctype (path ++. lbl) (term +. lbl) |
- (lbl, ctype) <- rtype ]
-reduceTerm (TblT ptype vtype) path table
- = sequence_ [ reduceTerm vtype (path ++! pat) (table +! pat) |
- pat <- enumeratePatterns ptype ]
+ = sequence_ [ reduceTerm ctype (path ++. lbl) (term +. lbl) | (lbl, ctype) <- rtype ]
+reduceTerm (TblT pats vtype) path table
+ = sequence_ [ reduceTerm vtype (path ++! pat) (table +! pat) | pat <- pats ]
------------------------------------------------------------
@@ -174,7 +172,7 @@ unifyPType arg (RecT prec) =
sequence [ liftM ((,) lbl) $
unifyPType (arg +. lbl) ptype |
(lbl, ptype) <- prec ]
-unifyPType (Arg nr _ path) (ConT con terms) =
+unifyPType (Arg nr _ path) (ConT terms) =
do (_, args, _, _) <- readState
case lookup path (ecatConstraints (args !! nr)) of
Just term -> return term
diff --git a/src/GF/Conversion/SimpleToMCFG/Strict.hs b/src/GF/Conversion/SimpleToMCFG/Strict.hs
index 6ca7c4737..a5519fcd8 100644
--- a/src/GF/Conversion/SimpleToMCFG/Strict.hs
+++ b/src/GF/Conversion/SimpleToMCFG/Strict.hs
@@ -109,7 +109,7 @@ termPaths ctype term | isBaseType ctype = [ (emptyPath, (ctype, term)) ]
parPaths :: SLinType -> STerm -> [[(SPath, STerm)]]
parPaths ctype term = mapM (uncurry (map . (,))) $ groupPairs $
nubsort [ (path, value) |
- (path, (ConT _ _, value)) <- termPaths ctype term ]
+ (path, (ConT _, value)) <- termPaths ctype term ]
strPaths :: SLinType -> STerm -> [(SPath, STerm)]
strPaths ctype term = [ (path, variants values) | (path, values) <- groupPairs paths ]