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
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -91,6 +91,15 @@ allCommands mgr = Map.fromAscList [
|
||||
ts <- generateRandom mgr (optCat opts)
|
||||
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 {
|
||||
longname = "help",
|
||||
synopsis = "get description of a command, or a the full list of commands",
|
||||
@@ -134,6 +143,7 @@ allCommands mgr = Map.fromAscList [
|
||||
lang -> [lang]
|
||||
optCat opts = valIdOpts "cat" (lookAbsFlag gr (cid "startcat")) opts
|
||||
optNum opts = valIntOpts "number" 1 opts
|
||||
optNumInf opts = valIntOpts "number" 1000000000 opts ---- 10^9
|
||||
|
||||
gr = gfcc mgr
|
||||
|
||||
|
||||
@@ -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