summaryrefslogtreecommitdiff
path: root/src/GF/Parsing/MCFG.hs
diff options
context:
space:
mode:
authorpeb <unknown>2005-05-09 08:25:56 +0000
committerpeb <unknown>2005-05-09 08:25:56 +0000
commit2b059b811db03a53e8e0f8ec1a655e507851a995 (patch)
tree467ad9a1849bf454b22d5b2a457d09f8247041e6 /src/GF/Parsing/MCFG.hs
parent01696e4f86fa156d079f2febaf103fbe229ffdb1 (diff)
"Committed_by_peb"
Diffstat (limited to 'src/GF/Parsing/MCFG.hs')
-rw-r--r--src/GF/Parsing/MCFG.hs41
1 files changed, 29 insertions, 12 deletions
diff --git a/src/GF/Parsing/MCFG.hs b/src/GF/Parsing/MCFG.hs
index 11c845365..4cfc6e2ec 100644
--- a/src/GF/Parsing/MCFG.hs
+++ b/src/GF/Parsing/MCFG.hs
@@ -4,9 +4,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/04/21 16:23:07 $
--- > CVS $Author: bringert $
--- > CVS $Revision: 1.3 $
+-- > CVS $Date: 2005/05/09 09:28:45 $
+-- > CVS $Author: peb $
+-- > CVS $Revision: 1.4 $
--
-- MCFG parsing
-----------------------------------------------------------------------------
@@ -23,20 +23,37 @@ import GF.Parsing.MCFG.PInfo
import qualified GF.Parsing.MCFG.Naive as Naive
import qualified GF.Parsing.MCFG.Active as Active
-import qualified GF.Parsing.MCFG.Range as Range (makeRange)
+import qualified GF.Parsing.MCFG.Active2 as Active2
+import qualified GF.Parsing.MCFG.Incremental as Incremental
+import qualified GF.Parsing.MCFG.Incremental2 as Incremental2
----------------------------------------------------------------------
-- parsing
-parseMCF :: (Ord c, Ord n, Ord l, Ord t) => String -> Err (MCFParser c n l t)
-parseMCF "n" = Ok $ Naive.parse
-parseMCF "an" = Ok $ Active.parse "n"
-parseMCF "ab" = Ok $ Active.parse "b"
-parseMCF "at" = Ok $ Active.parse "t"
+-- parseMCF :: (Ord c, Ord n, Ord l, Ord t) => String -> Err (MCFParser c n l t)
+
+parseMCF "n" pinfo starts toks = Ok $ Naive.parse pinfo starts toks
+parseMCF "an" pinfo starts toks = Ok $ Active.parse "n" pinfo starts toks
+parseMCF "ab" pinfo starts toks = Ok $ Active.parse "b" pinfo starts toks
+parseMCF "at" pinfo starts toks = Ok $ Active.parse "t" pinfo starts toks
+parseMCF "i" pinfo starts toks = Ok $ Incremental.parse pinfo starts toks
+
+parseMCF "an2" pinfo starts toks = Ok $ Active2.parse "n" pinfo starts toks
+parseMCF "ab2" pinfo starts toks = Ok $ Active2.parse "b" pinfo starts toks
+parseMCF "at2" pinfo starts toks = Ok $ Active2.parse "t" pinfo starts toks
+parseMCF "i2" pinfo starts toks = Ok $ Incremental2.parse pinfo starts toks
+
+parseMCF "rn" pinfo starts toks = Ok $ Naive.parseR (rrP pinfo toks) starts
+parseMCF "ran" pinfo starts toks = Ok $ Active.parseR "n" (rrP pinfo toks) starts
+parseMCF "rab" pinfo starts toks = Ok $ Active.parseR "b" (rrP pinfo toks) starts
+parseMCF "rat" pinfo starts toks = Ok $ Active.parseR "t" (rrP pinfo toks) starts
+parseMCF "ri" pinfo starts toks = Ok $ Incremental.parseR (rrP pinfo toks) starts ntoks
+ where ntoks = snd (inputBounds toks)
+
-- default parsers:
-parseMCF "a" = parseMCF "an"
+parseMCF "" pinfo starts toks = parseMCF "n" pinfo starts toks
-- error parser:
-parseMCF prs = Bad $ "Parser not defined: " ++ prs
-
+parseMCF prs pinfo starts toks = Bad $ "Parser not defined: " ++ prs
+rrP pi = rangeRestrictPInfo pi