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