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