From 74ad9aa2fd7a9cbd4fb011cd445cd1e47a03e8ef Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 20 Sep 2007 13:26:59 +0000 Subject: printing GSyntax with GFCC trees --- src/GF/Canon/GFCC/GFCCAPI.hs | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'src/GF/Canon/GFCC/GFCCAPI.hs') diff --git a/src/GF/Canon/GFCC/GFCCAPI.hs b/src/GF/Canon/GFCC/GFCCAPI.hs index 211f9f67b..9c3978442 100644 --- a/src/GF/Canon/GFCC/GFCCAPI.hs +++ b/src/GF/Canon/GFCC/GFCCAPI.hs @@ -22,7 +22,8 @@ import GF.Canon.GFCC.ParGFCC import GF.Canon.GFCC.PrintGFCC import GF.Canon.GFCC.ErrM import GF.Canon.GFCC.FCFGParsing -import GF.Conversion.SimpleToFCFG (convertGrammarCId,FCat(..)) +import qualified GF.Canon.GFCC.GenGFCC as G +import GF.Conversion.SimpleToFCFG (convertGrammarCId,FCat(..)) ---- --import GF.Data.Operations --import GF.Infra.UseIO @@ -52,8 +53,11 @@ parse :: MultiGrammar -> Language -> Category -> String -> [Tree] linearizeAll :: MultiGrammar -> Tree -> [String] linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)] ---parseAll :: MultiGrammar -> Category -> String -> [[Tree]] ---parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])] +parseAll :: MultiGrammar -> Category -> String -> [[Tree]] +parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])] + +generateAll :: MultiGrammar -> Category -> [Tree] +generateRandom :: MultiGrammar -> Category -> IO [Tree] readTree :: MultiGrammar -> String -> Tree showTree :: Tree -> String @@ -80,26 +84,20 @@ linearize mgr lang = GF.Canon.GFCC.DataGFCC.linearize (gfcc mgr) (CId lang) parse mgr lang cat s = err error id $ parserLang (gfcc mgr) (CId lang) (CId cat) (words s) -{- - map tree2exp . - errVal [] . - parseString (stateOptions sgr) sgr cfcat - where - sgr = stateGrammarOfLang mgr (zIdent lang) - cfcat = string2CFCat abs cat - abs = maybe (error "no abstract syntax") prIdent $ abstract mgr --} - linearizeAll mgr = map snd . linearizeAllLang mgr linearizeAllLang mgr t = [(lang,linearThis mgr lang t) | lang <- languages mgr] -{- parseAll mgr cat = map snd . parseAllLang mgr cat parseAllLang mgr cat s = [(lang,ts) | lang <- languages mgr, let ts = parse mgr lang cat s, not (null ts)] --} + +generateRandom mgr cat = do + gen <- newStdGen + return $ G.generateRandom gen (gfcc mgr) (CId cat) + +generateAll mgr cat = G.generate (gfcc mgr) (CId cat) readTree _ = err (const exp0) id . (pExp . myLexer) -- cgit v1.2.3