1
0
forked from GitHub/gf-core

gt command in gf3

This commit is contained in:
aarne
2008-01-08 12:22:05 +00:00
parent c6fa1c3a81
commit 2791eee7ff
4 changed files with 19 additions and 7 deletions

View File

@@ -59,8 +59,9 @@ linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)]
parseAll :: MultiGrammar -> Category -> String -> [[Tree]]
parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])]
generateAll :: MultiGrammar -> Category -> [Tree]
generateRandom :: MultiGrammar -> Category -> IO [Tree]
generateAll :: MultiGrammar -> Category -> [Tree]
generateRandom :: MultiGrammar -> Category -> IO [Tree]
generateAllDepth :: MultiGrammar -> Category -> Maybe Int -> [Tree]
readTree :: MultiGrammar -> String -> Tree
showTree :: Tree -> String
@@ -105,7 +106,8 @@ generateRandom mgr cat = do
gen <- newStdGen
return $ genRandom gen (gfcc mgr) (CId cat)
generateAll mgr cat = generate (gfcc mgr) (CId cat)
generateAll mgr cat = generate (gfcc mgr) (CId cat) Nothing
generateAllDepth mgr cat = generate (gfcc mgr) (CId cat)
readTree _ = pTree

View File

@@ -8,8 +8,8 @@ import qualified Data.Map as M
import System.Random
-- generate an infinite list of trees exhaustively
generate :: GFCC -> CId -> [Exp]
generate gfcc cat = concatMap (\i -> gener i cat) [0..]
generate :: GFCC -> CId -> Maybe Int -> [Exp]
generate gfcc cat dp = concatMap (\i -> gener i cat) depths
where
gener 0 c = [tree (AC f) [] | (f, ([],_)) <- fns c]
gener i c = [
@@ -21,7 +21,7 @@ generate gfcc cat = concatMap (\i -> gener i cat) [0..]
depth tr >= i
]
fns c = [(f,catSkeleton ty) | (f,ty) <- functionsToCat gfcc c]
depths = maybe [0 ..] (\d -> [0..d]) dp
-- generate an infinite list of trees randomly
genRandom :: StdGen -> GFCC -> CId -> [Exp]