Skip to content

Commit efed891

Browse files
committed
ud2gf: Prioritize the selected startcat
1 parent 96d49f4 commit efed891

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 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 besttree0
@@ -280,16 +280,19 @@ theAbsTreeInfo dt = case devAbsTrees (root dt) of
280280
_ -> error $ "no unique abstree in " ++ prDevNode 2 (root dt)
281281

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

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

0 commit comments

Comments
 (0)