forked from GitHub/gf-core
gt command in gf3
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user