(****************************************************************************)
(*                                                                          *)
(*                                   OCaml                                  *)
(*                                                                          *)
(*                            INRIA Rocquencourt                            *)
(*                                                                          *)
(*  Copyright  2006   Institut National de Recherche  en  Informatique et   *)
(*  en Automatique.  All rights reserved.  This file is distributed under   *)
(*  the terms of the GNU Library General Public License, with the special   *)
(*  exception on linking described in LICENSE at the top of the Camlp4      *)
(*  source tree.                                                            *)
(*                                                                          *)
(****************************************************************************)

(* Authors:
 * - Daniel de Rauglaudre: initial version
 * - Nicolas Pouillard: refactoring
 *)
(*
      value entry e s =
        let rec find_levels =
          fun
          [ [] -> None
          | [lev :: levs] ->
              match find_tree lev.lsuffix with
              [ None ->
                  match find_tree lev.lprefix with
                  [ None -> find_levels levs
                  | x -> x ]
              | x -> x ] ]
        and symbol =
          fun
          [ Snterm e -> if e.ename = s then Some e else None
          | Snterml e _ -> if e.ename = s then Some e else None
          | Smeta _ sl _ -> find_symbol_list sl
          | Slist0 s -> find_symbol s
          | Slist0sep s _ -> find_symbol s
          | Slist1 s -> find_symbol s
          | Slist1sep s _ -> find_symbol s
          | Sopt s -> find_symbol s
          | Stree t -> find_tree t
          | Sself | Snext | Stoken _ | Stoken_fun _ -> None ]
        and symbol_list =
          fun
          [ [s :: sl] ->
              match find_symbol s with
              [ None -> find_symbol_list sl
              | x -> x ]
          | [] -> None ]
        and tree =
          fun
          [ Node {node = s; brother = bro; son = son} ->
              match find_symbol s with
              [ None ->
                  match find_tree bro with
                  [ None -> find_tree son
                  | x -> x ]
              | x -> x ]
          | LocAct _ _ | DeadEnd -> None ]
        in
        match e.edesc with
        [ Dlevels levs ->
            match find_levels levs with
            [ Some e -> e
            | None -> raise Not_found ]
        | Dparser _ -> raise Not_found ]
      ;
*)
