Skip to content

Commit 21482fb

Browse files
committed
ud2gf: Prioritize the selected startcat
1 parent 95d3169 commit 21482fb

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

UD2GF.hs

Lines changed: 9 additions & 6 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 besttree = addBackups opts besttree0
@@ -281,16 +281,19 @@ theAbsTreeInfo dt = case devAbsTrees (root dt) of
281281
_ -> error $ "no unique abstree in " ++ prDevNode 2 (root dt)
282282

283283
-- split trees showing just one GF tree in each DevTree
284-
splitDevTree :: DevTree -> [DevTree]
285-
splitDevTree tr@(RTree dn trs) =
286-
[RTree (dn{devAbsTrees = [t]}) (map (chase t) trs) | t <- devAbsTrees dn]
284+
splitDevTree :: UDEnv -> DevTree -> [DevTree]
285+
splitDevTree env tr@(RTree dn trs) =
286+
[RTree (dn{devAbsTrees = [t]}) (map (chase t) trs) | t <- sortOn isStartCat $ devAbsTrees dn]
287287
where
288288
chase AbsTreeInfo { atiAbsTree = ast, atiCat = cat, atiUDIds = usage} tr@(RTree d ts) =
289289
case elem (devIndex d) usage of
290290
True -> case sortOn ((1000-) . sizeRTree . atiAbsTree) [dt | dt@AbsTreeInfo { atiAbsTree = t} <- devAbsTrees d, isSubRTree t ast] of
291291
t:_ -> RTree (d{devAbsTrees = [t]}) (map (chase t) ts)
292292
_ -> error $ "wrong indexing in\n" ++ prLinesRTree (prDevNode 1) tr
293-
False -> head $ splitDevTree $ RTree (d{devNeedBackup = True}) ts ---- head
293+
False -> head $ splitDevTree env $ RTree (d{devNeedBackup = True}) ts ---- head
294+
295+
isStartCat :: AbsTreeInfo -> Bool
296+
isStartCat (rt, (ci, uis)) = startCategory env /= mkType [] ci []
294297

295298
prtStatus udids = "[" ++ concat (intersperse "," (map prt udids)) ++ "]"
296299

0 commit comments

Comments
 (0)