Skip to content

Commit dc75185

Browse files
committed
ud2gf: Prioritize the selected startcat
1 parent 006e030 commit dc75185

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

UD2GF.hs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ getExprs opts env string = map getExpr sentences
4646
devtree0 = udtree2devtree udtree
4747
devtree1 = analyseWords env devtree0
4848
devtree = combineTrees env devtree1
49-
besttree0 = head (splitDevTree devtree)
49+
besttree0 = head (splitDevTree env devtree)
5050
besttree = addBackups opts besttree0
5151
ts0 = devtree2abstrees besttree
5252
ts1 = map (expandMacro env) ts0
@@ -81,7 +81,7 @@ showUD2GF opts env sentence = do
8181
let devtree = combineTrees env devtree1
8282
ifOpt opts "dt" $ prLinesRTree (prDevNode 4) devtree
8383

84-
let besttree0 = head (splitDevTree devtree)
84+
let besttree0 = head (splitDevTree env devtree)
8585
ifOpt opts "bt0" $ prLinesRTree (prDevNode 1) besttree0
8686

8787
let besttree0Expanded = (mapRTree . mapDevAbsTree . mapAtiAt) (expandMacro env) besttree0
@@ -290,16 +290,19 @@ theAbsTreeInfo dt = case devAbsTrees (root dt) of
290290
_ -> error $ "no unique abstree in " ++ prDevNode 2 (root dt)
291291

292292
-- split trees showing just one GF tree in each DevTree
293-
splitDevTree :: DevTree -> [DevTree]
294-
splitDevTree tr@(RTree dn trs) =
295-
[RTree (dn{devAbsTrees = [t]}) (map (chase t) trs) | t <- devAbsTrees dn]
293+
splitDevTree :: UDEnv -> DevTree -> [DevTree]
294+
splitDevTree env tr@(RTree dn trs) =
295+
[RTree (dn{devAbsTrees = [t]}) (map (chase t) trs) | t <- sortOn isStartCat $ devAbsTrees dn]
296296
where
297297
chase AbsTreeInfo { atiAbsTree = ast, atiCat = cat, atiUDIds = usage} tr@(RTree d ts) =
298298
case elem (devIndex d) usage of
299299
True -> case sortOn ((1000-) . sizeRTree . atiAbsTree) [dt | dt@AbsTreeInfo { atiAbsTree = t} <- devAbsTrees d, isSubRTree t ast] of
300300
t:_ -> RTree (d{devAbsTrees = [t]}) (map (chase t) ts)
301-
_ -> error $ "wrong indexing in\n" ++ prLinesRTree (prDevNode 1) tr
302-
False -> head $ splitDevTree $ RTree (d{devNeedBackup = True}) ts ---- head
301+
_ -> error $ "wrong indexing in\n" ++ prLinesRTree (prDevNode 1) tr
302+
False -> head $ splitDevTree env $ RTree (d{devNeedBackup = True}) ts ---- head
303+
304+
isStartCat :: AbsTreeInfo -> Bool
305+
isStartCat (rt, (ci, uis)) = startCategory env /= mkType [] ci []
303306

304307
prtStatus udids = "[" ++ concat (intersperse "," (map prt udids)) ++ "]"
305308

0 commit comments

Comments
 (0)