summaryrefslogtreecommitdiff
path: root/src/GF/UseGrammar
diff options
context:
space:
mode:
authorpeb <unknown>2005-04-11 12:57:45 +0000
committerpeb <unknown>2005-04-11 12:57:45 +0000
commitac00f77dadd4d447803dd7cab5a36f47365325d0 (patch)
tree2fd02b19234f8d1fcc20ee67a2367d4d4eebfcd8 /src/GF/UseGrammar
parentf6273f7033b85eea9a8d0cc7d31e9697ba95d5b7 (diff)
"Committed_by_peb"
Diffstat (limited to 'src/GF/UseGrammar')
-rw-r--r--src/GF/UseGrammar/Custom.hs67
-rw-r--r--src/GF/UseGrammar/Parsing.hs22
2 files changed, 64 insertions, 25 deletions
diff --git a/src/GF/UseGrammar/Custom.hs b/src/GF/UseGrammar/Custom.hs
index 727b11950..7e8fe9162 100644
--- a/src/GF/UseGrammar/Custom.hs
+++ b/src/GF/UseGrammar/Custom.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/03/31 15:47:43 $
--- > CVS $Author: aarne $
--- > CVS $Revision: 1.50 $
+-- > CVS $Date: 2005/04/11 13:53:39 $
+-- > CVS $Author: peb $
+-- > CVS $Revision: 1.51 $
--
-- A database for customizable GF shell commands.
--
@@ -66,17 +66,24 @@ import GrammarToHaskell
-- the cf parsing algorithms
import ChartParser -- or some other CF Parser
-import qualified GF.Parsing.ParseCF as PCF
+import qualified GF.OldParsing.ParseCF as PCFOld
--import qualified ParseGFCviaCFG as PGFC
--import NewChartParser
--import NewerChartParser
-- grammar conversions -- peb 19/4-04
-- see also customGrammarPrinter
-import qualified GF.Parsing.ConvertGrammar as Cnv
+import qualified GF.OldParsing.ConvertGrammar as CnvOld
import qualified GF.Printing.PrintParser as Prt
-import qualified GF.Data.Assoc as Assoc
-import qualified GF.Parsing.ConvertFiniteGFC as Fin
+--import qualified GF.Data.Assoc as Assoc
+--import qualified GF.OldParsing.ConvertFiniteGFC as Fin
+--import qualified GF.OldParsing.ConvertGFCtoSimple as Simp
+--import qualified GF.OldParsing.ConvertFiniteSimple as FinSimp
+--import qualified GF.OldParsing.ConvertSimpleToMCFG as MCFSimp
+--import qualified GF.Conversion.GFCtoSimple as G2S
+--import qualified GF.Conversion.SimpleToMCFG as S2M
+--import GF.Conversion.FromGFC
+import qualified GF.Infra.Print as Prt2
import GFC
import qualified MkGFC as MC
@@ -230,10 +237,10 @@ customGrammarPrinter =
,(strCI "srg", prSRG . stateCF)
,(strCI "gsl", \s -> let opts = stateOptions s
name = cncId s
- in gslPrinter name opts $ Cnv.cfg $ statePInfo s)
+ in gslPrinter name opts $ CnvOld.cfg $ statePInfoOld s)
,(strCI "jsgf", \s -> let opts = stateOptions s
name = cncId s
- in jsgfPrinter name opts $ Cnv.cfg $ statePInfo s)
+ in jsgfPrinter name opts $ CnvOld.cfg $ statePInfoOld s)
,(strCI "plbnf", prLBNF True)
,(strCI "lbnf", prLBNF False)
,(strCI "bnf", prBNF False)
@@ -250,15 +257,37 @@ customGrammarPrinter =
-}
-- add your own grammar printers here
-- grammar conversions, (peb)
- ,(strCI "gfc_show", show . grammar2canon . stateGrammarST)
- ,(strCI "mcfg", Prt.prt . Cnv.mcfg . statePInfo)
- ,(strCI "cfg", Prt.prt . Cnv.cfg . statePInfo)
- ,(strCI "mcfg_show", show . Cnv.mcfg . statePInfo)
- ,(strCI "cfg_show", show . Cnv.cfg . statePInfo)
+-- ,(strCI "gfc_show", show . grammar2canon . stateGrammarST)
+ ,(strCI "mcfg-old", Prt.prt . CnvOld.mcfg . statePInfoOld)
+ ,(strCI "cfg-old", Prt.prt . CnvOld.cfg . statePInfoOld)
+-- ,(strCI "mcfg_show", show . CnvOld.mcfg . statePInfoOld)
+-- ,(strCI "cfg_show", show . CnvOld.cfg . statePInfoOld)
-- hack for printing finiteness of grammar categories:
- -- ,(strCI "finiteness", Prt.prtAfter "\n" . Assoc.aAssocs . Cnv.fintypes . statePInfo)
- ,(strCI "finite", prCanon . Fin.convertGrammar . stateGrammarST)
+-- ,(strCI "finiteness", Prt.prtAfter "\n" . Assoc.aAssocs . CnvOld.fintypes . statePInfoOld)
+-- ,(strCI "finite", prCanon . Fin.convertGrammar . stateGrammarST)
+-- ,(strCI "simpleMCF", (\sg -> Prt.prt $ MCFSimp.convertGrammar "nondet" $
+-- Simp.convertGrammar (stateGrammarST sg, cncId sg)))
+-- ,(strCI "simpleGFC", (\sg -> Prt.prt $ Simp.convertGrammar (stateGrammarST sg, cncId sg)))
+-- ,(strCI "finiteSimple", (\sg -> Prt.prt $ FinSimp.convertGrammar $
+-- Simp.convertGrammar (stateGrammarST sg, cncId sg)))
--- also include printing via grammar2syntax!
+-- ,(strCI "g2s", (\sg -> Prt2.prt $ G2S.convertGrammar (stateGrammarST sg, cncId sg)))
+-- ,(strCI "g2s2m", (\sg -> Prt2.prt $ S2M.convertGrammar "nondet" $
+-- G2S.convertGrammar (stateGrammarST sg, cncId sg)))
+ ,(strCI "mcfg", Prt2.prt . stateMCFG)
+ ,(strCI "cfg", Prt2.prt . stateCFG)
+{-
+ ,(strCI "simple", Prt2.prt . convertToSimple "" . stateGrammarLang)
+ ,(strCI "mcfg-nondet", Prt2.prt . convertToMCFG "" "nondet" . stateGrammarLang)
+ ,(strCI "mcfg-strict", Prt2.prt . convertToMCFG "" "strict" . stateGrammarLang)
+ ,(strCI "cfg-nondet", Prt2.prt . convertToCFG "" "nondet" . stateGrammarLang)
+ ,(strCI "cfg-strict", Prt2.prt . convertToCFG "" "strict" . stateGrammarLang)
+ ,(strCI "fin-simple", Prt2.prt . convertToSimple "fin" . stateGrammarLang)
+ ,(strCI "fin-mcfg-nondet", Prt2.prt . convertToMCFG "fin" "nondet" . stateGrammarLang)
+ ,(strCI "fin-mcfg-strict", Prt2.prt . convertToMCFG "fin" "strict" . stateGrammarLang)
+ ,(strCI "fin-cfg-nondet", Prt2.prt . convertToCFG "fin" "nondet" . stateGrammarLang)
+ ,(strCI "fin-cfg-strict", Prt2.prt . convertToCFG "fin" "strict" . stateGrammarLang)
+-}
]
customMultiGrammarPrinter =
@@ -344,14 +373,14 @@ customStringCommand =
customParser =
customData "Parsers, selected by option -parser=x" $
[
- (strCI "chart", PCF.parse "ibn" . stateCF)
+ (strCI "chart", PCFOld.parse "ibn" . stateCF)
,(strCI "old", chartParser . stateCF)
,(strCI "myparser", myParser)
-- add your own parsers here
]
-- 31/5-04, peb:
- ++ [ (strCI ("chart"++name), PCF.parse descr . stateCF) |
- (descr, names) <- PCF.alternatives, name <- names ]
+ ++ [ (strCI ("chart"++name), PCFOld.parse descr . stateCF) |
+ (descr, names) <- PCFOld.alternatives, name <- names ]
customTokenizer =
customData "Tokenizers, selected by option -lexer=x" $
diff --git a/src/GF/UseGrammar/Parsing.hs b/src/GF/UseGrammar/Parsing.hs
index 5c24e4566..ae890b757 100644
--- a/src/GF/UseGrammar/Parsing.hs
+++ b/src/GF/UseGrammar/Parsing.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/03/21 13:54:45 $
+-- > CVS $Date: 2005/04/11 13:53:39 $
-- > CVS $Author: peb $
--- > CVS $Revision: 1.15 $
+-- > CVS $Revision: 1.16 $
--
-- (Description of the module)
-----------------------------------------------------------------------------
@@ -35,7 +35,8 @@ import Custom
import ShellState
import PPrCF (prCFTree)
-import qualified GF.Parsing.ParseGFC as N
+import qualified GF.OldParsing.ParseGFC as NewOld
+import qualified GF.NewParsing.GFC as New
import Operations
@@ -56,12 +57,20 @@ parseStringC :: Options -> StateGrammar -> CFCat -> String -> Check [Tree]
parseStringC opts0 sg cat s
---- to test peb's new parser 6/10/2003
+---- (to be obsoleted by "newer" below
| oElem newParser opts0 = do
let pm = maybe "" id $ getOptVal opts0 useParser -- -parser=pm
- gr = stateGrammarST sg
ct = cfCat2Cat cat
- ts <- checkErr $ N.newParser pm sg ct s -- peb 27/5-04 (changed gr -> sg)
- mapM (checkErr . (annotate gr)) ts
+ ts <- checkErr $ NewOld.newParser pm sg ct s
+ mapM (checkErr . annotate (stateGrammarST sg)) ts
+
+---- to test peb's newer parser 7/4-05
+ | oElem newerParser opts0 = do
+ let opts = unionOptions opts0 $ stateOptions sg
+ pm = maybe "" id $ getOptVal opts0 useParser -- -parser=pm
+ tok = customOrDefault opts useTokenizer customTokenizer sg
+ ts <- return $ New.parse pm (pInfo sg) (absId sg) cat (tok s)
+ mapM (checkErr . annotate (stateGrammarST sg)) ts
| otherwise = do
let opts = unionOptions opts0 $ stateOptions sg
@@ -72,6 +81,7 @@ parseStringC opts0 sg cat s
parser = customOrDefault opts useParser customParser sg cat
tokens2trms opts sg cn parser (tok s)
+
tokens2trms :: Options ->StateGrammar ->Ident -> CFParser -> [CFTok] -> Check [Tree]
tokens2trms opts sg cn parser toks = trees2trms opts sg cn toks trees info
where result = parser toks