diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-09-19 13:49:12 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-09-19 13:49:12 +0000 |
| commit | 7825a1a1c54d6922c709bed7de3f23f049e0046e (patch) | |
| tree | 9eedd42bf67ae46b8f233234064c1edce133587c /src/GF/Conversion/SimpleToFCFG.hs | |
| parent | a886f7042b2ad16fa3ef120548df9773ffafbb45 (diff) | |
adapted GFCC2FCFG to other uses of GFCC, made it to default parser
Diffstat (limited to 'src/GF/Conversion/SimpleToFCFG.hs')
| -rw-r--r-- | src/GF/Conversion/SimpleToFCFG.hs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/GF/Conversion/SimpleToFCFG.hs b/src/GF/Conversion/SimpleToFCFG.hs index 402729341..e0e639800 100644 --- a/src/GF/Conversion/SimpleToFCFG.hs +++ b/src/GF/Conversion/SimpleToFCFG.hs @@ -133,14 +133,23 @@ convertTerm cnc_defs selector (FV vars) lins = do term <- convertTerm cnc_defs selector term lins convertTerm cnc_defs selector (S ts) ((lbl_path,lin) : lins) = do projectHead lbl_path foldM (\lins t -> convertTerm cnc_defs selector t lins) ((lbl_path,lin) : lins) (reverse ts) -convertTerm cnc_defs selector (KS str) ((lbl_path,lin) : lins) = do projectHead lbl_path - return ((lbl_path,Tok str : lin) : lins) -convertTerm cnc_defs selector (KP (str:_)_)((lbl_path,lin) : lins) = do projectHead lbl_path - return ((lbl_path,Tok str : lin) : lins) +convertTerm cnc_defs selector (K (KS str)) ((lbl_path,lin) : lins) = + do projectHead lbl_path + return ((lbl_path,Tok str : lin) : lins) +convertTerm cnc_defs selector (K (KP (str:_)_))((lbl_path,lin) : lins) = + do projectHead lbl_path + return ((lbl_path,Tok str : lin) : lins) convertTerm cnc_defs selector (RP _ term) lins = convertTerm cnc_defs selector term lins convertTerm cnc_defs selector (F id) lins = do term <- Map.lookup id cnc_defs convertTerm cnc_defs selector term lins -convertTerm cnc_defs selector (W s ss) ((lbl_path,lin) : lins) = convertRec cnc_defs selector 0 [KS (s ++ s1) | s1 <- ss] lbl_path lin lins +convertTerm cnc_defs selector (W s t) ((lbl_path,lin) : lins) = do + ss <- case t of + R ss -> return ss + F f -> do + t <- Map.lookup f cnc_defs + case t of + R ss -> return ss + convertRec cnc_defs selector 0 [K (KS (s ++ s1)) | K (KS s1) <- ss] lbl_path lin lins convertTerm cnc_defs selector x lins = error ("convertTerm ("++show x++")") |
