diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2006-06-01 10:26:49 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2006-06-01 10:26:49 +0000 |
| commit | 496f1fc8767f9d8ce1bb69b6e6460c2b7b7dd4b4 (patch) | |
| tree | 744205609902f1dde62a9aca91457da65e02deef /src/GF/Conversion/SimpleToMCFG/Nondet.hs | |
| parent | f7d8cdfc2ec43984979a6c7dd1eacc221dd779ec (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/Nondet.hs')
| -rw-r--r-- | src/GF/Conversion/SimpleToMCFG/Nondet.hs | 16 |
1 files changed, 7 insertions, 9 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 |
