diff --git a/src-3.0/GF/Speech/PrRegExp.hs b/src-3.0/GF/Speech/PrRegExp.hs index 55a25d69b..ae450dee8 100644 --- a/src-3.0/GF/Speech/PrRegExp.hs +++ b/src-3.0/GF/Speech/PrRegExp.hs @@ -1,33 +1,27 @@ ---------------------------------------------------------------------- -- | --- Module : PrSLF --- Maintainer : BB --- Stability : (stable) --- Portability : (portable) +-- Module : GF.Speech.PrRegExp -- -- This module prints a grammar as a regular expression. ----------------------------------------------------------------------------- module GF.Speech.PrRegExp (regexpPrinter,multiRegexpPrinter) where -import GF.Conversion.Types -import GF.Formalism.Utilities -import GF.Infra.Ident -import GF.Infra.Option (Options) -import GF.Speech.CFGToFiniteState +import GF.Speech.CFG +import GF.Speech.CFGToFA +import GF.Speech.PGFToCFG import GF.Speech.RegExp -import GF.Compile.ShellState (StateGrammar) +import PGF +regexpPrinter :: PGF -> CId -> String +regexpPrinter pgf cnc = (++"\n") $ prRE $ dfa2re $ cfgToFA $ pgfToCFG pgf cnc -regexpPrinter :: Options -> StateGrammar -> String -regexpPrinter opts s = (++"\n") $ prRE $ dfa2re $ cfgToFA opts s +multiRegexpPrinter :: PGF -> CId -> String +multiRegexpPrinter pgf cnc = prREs $ mfa2res $ cfgToMFA $ pgfToCFG pgf cnc -multiRegexpPrinter :: Options -> StateGrammar -> String -multiRegexpPrinter opts s = prREs $ mfa2res $ cfgToMFA opts s - -prREs :: [(String,RE (MFALabel String))] -> String +prREs :: [(String,RE CFSymbol)] -> String prREs res = unlines [l ++ " = " ++ prRE (mapRE showLabel re) | (l,re) <- res] where showLabel = symbol (\l -> "<" ++ l ++ ">") id -mfa2res :: MFA String -> [(String,RE (MFALabel String))] +mfa2res :: MFA -> [(String,RE CFSymbol)] mfa2res (MFA _ dfas) = [(l, minimizeRE (dfa2re dfa)) | (l,dfa) <- dfas]