let rec delete_rule_in_suffix entry symbols =
function
| lev :: levs ->
(match delete_rule_in_tree entry symbols lev.lsuffix
with
| Some ((dsl, t)) ->
((match dsl with
| Some dsl ->
List.iter (decr_keyw_use entry.egram) dsl
| None -> ());
(match t with
| DeadEnd when lev.lprefix == DeadEnd -> levs
| _ ->
let lev =
{
assoc = lev.assoc;
lname = lev.lname;
lsuffix = t;
lprefix = lev.lprefix;
}
in lev :: levs))
| None ->
let levs =
delete_rule_in_suffix entry symbols levs
in lev :: levs)
| [] -> raise Not_found