forked from GitHub/gf-core
gt command in gf3
This commit is contained in:
@@ -172,7 +172,7 @@ harjoittelu harjoittelun harjoittelua harjoitteluna harjoitteluun harjoittelujen
|
|||||||
|
|
||||||
asia asian asiaa asiana asiaan asioiden asioita asioina asioissa asioihin
|
asia asian asiaa asiana asiaan asioiden asioita asioina asioissa asioihin
|
||||||
|
|
||||||
mieli mielin mieliä mielinä mieliin mielien mielejä mieleinä mieleissä mieleihin
|
mieli mielen mieltä mielenä mieleen mielien/mielten mieliä mielinä mielissä mieliin
|
||||||
|
|
||||||
puuha puuhan puuhaa puuhana puuhaan puuhien puuhia puuhina puuhissa puuhiin
|
puuha puuhan puuhaa puuhana puuhaan puuhien puuhia puuhina puuhissa puuhiin
|
||||||
|
|
||||||
|
|||||||
@@ -91,6 +91,15 @@ allCommands mgr = Map.fromAscList [
|
|||||||
ts <- generateRandom mgr (optCat opts)
|
ts <- generateRandom mgr (optCat opts)
|
||||||
return $ fromTrees $ take (optNum opts) ts
|
return $ fromTrees $ take (optNum opts) ts
|
||||||
}),
|
}),
|
||||||
|
("gt", emptyCommandInfo {
|
||||||
|
longname = "generate_trees",
|
||||||
|
synopsis = "generates a list of trees, by default exhaustive",
|
||||||
|
flags = ["cat","depth","number"],
|
||||||
|
exec = \opts _ -> do
|
||||||
|
let dp = return $ valIntOpts "depth" 4 opts
|
||||||
|
let ts = generateAllDepth mgr (optCat opts) dp
|
||||||
|
return $ fromTrees $ take (optNumInf opts) ts
|
||||||
|
}),
|
||||||
("h", emptyCommandInfo {
|
("h", emptyCommandInfo {
|
||||||
longname = "help",
|
longname = "help",
|
||||||
synopsis = "get description of a command, or a the full list of commands",
|
synopsis = "get description of a command, or a the full list of commands",
|
||||||
@@ -134,6 +143,7 @@ allCommands mgr = Map.fromAscList [
|
|||||||
lang -> [lang]
|
lang -> [lang]
|
||||||
optCat opts = valIdOpts "cat" (lookAbsFlag gr (cid "startcat")) opts
|
optCat opts = valIdOpts "cat" (lookAbsFlag gr (cid "startcat")) opts
|
||||||
optNum opts = valIntOpts "number" 1 opts
|
optNum opts = valIntOpts "number" 1 opts
|
||||||
|
optNumInf opts = valIntOpts "number" 1000000000 opts ---- 10^9
|
||||||
|
|
||||||
gr = gfcc mgr
|
gr = gfcc mgr
|
||||||
|
|
||||||
|
|||||||
@@ -59,8 +59,9 @@ linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)]
|
|||||||
parseAll :: MultiGrammar -> Category -> String -> [[Tree]]
|
parseAll :: MultiGrammar -> Category -> String -> [[Tree]]
|
||||||
parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])]
|
parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])]
|
||||||
|
|
||||||
generateAll :: MultiGrammar -> Category -> [Tree]
|
generateAll :: MultiGrammar -> Category -> [Tree]
|
||||||
generateRandom :: MultiGrammar -> Category -> IO [Tree]
|
generateRandom :: MultiGrammar -> Category -> IO [Tree]
|
||||||
|
generateAllDepth :: MultiGrammar -> Category -> Maybe Int -> [Tree]
|
||||||
|
|
||||||
readTree :: MultiGrammar -> String -> Tree
|
readTree :: MultiGrammar -> String -> Tree
|
||||||
showTree :: Tree -> String
|
showTree :: Tree -> String
|
||||||
@@ -105,7 +106,8 @@ generateRandom mgr cat = do
|
|||||||
gen <- newStdGen
|
gen <- newStdGen
|
||||||
return $ genRandom gen (gfcc mgr) (CId cat)
|
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
|
readTree _ = pTree
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import qualified Data.Map as M
|
|||||||
import System.Random
|
import System.Random
|
||||||
|
|
||||||
-- generate an infinite list of trees exhaustively
|
-- generate an infinite list of trees exhaustively
|
||||||
generate :: GFCC -> CId -> [Exp]
|
generate :: GFCC -> CId -> Maybe Int -> [Exp]
|
||||||
generate gfcc cat = concatMap (\i -> gener i cat) [0..]
|
generate gfcc cat dp = concatMap (\i -> gener i cat) depths
|
||||||
where
|
where
|
||||||
gener 0 c = [tree (AC f) [] | (f, ([],_)) <- fns c]
|
gener 0 c = [tree (AC f) [] | (f, ([],_)) <- fns c]
|
||||||
gener i c = [
|
gener i c = [
|
||||||
@@ -21,7 +21,7 @@ generate gfcc cat = concatMap (\i -> gener i cat) [0..]
|
|||||||
depth tr >= i
|
depth tr >= i
|
||||||
]
|
]
|
||||||
fns c = [(f,catSkeleton ty) | (f,ty) <- functionsToCat gfcc c]
|
fns c = [(f,catSkeleton ty) | (f,ty) <- functionsToCat gfcc c]
|
||||||
|
depths = maybe [0 ..] (\d -> [0..d]) dp
|
||||||
|
|
||||||
-- generate an infinite list of trees randomly
|
-- generate an infinite list of trees randomly
|
||||||
genRandom :: StdGen -> GFCC -> CId -> [Exp]
|
genRandom :: StdGen -> GFCC -> CId -> [Exp]
|
||||||
|
|||||||
Reference in New Issue
Block a user