@@ -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
294297prtStatus udids = " [" ++ concat (intersperse " ," (map prt udids)) ++ " ]"
295298
0 commit comments