1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
(*
* ocamlweb - A WEB-like tool for ocaml
* Copyright (C) 1999-2001 Jean-Christophe FILLITRE and Claude MARCH
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License version 2, as published by the Free Software Foundation.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU Library General Public License version 2 for more details
* (enclosed in the file LGPL).
*)
(*i $Id$ i*)
(*s That module exports to global tables [used] and [defined], indexed
by identifiers (strings) and containing respectively the sets of locations
where they are defined and used.
Those locations are of type [where], which contain the name of the file
and the absolute position in the source.
*)
type where = { w_filename : string; w_loc : int }
type entry_type =
| Value
| Constructor
| Field
| Label
| Type
| Exception
| Module
| ModuleType
| Class
| Method
| LexParseRule (*r CAMLLEX entry points *)
| RegExpr (*r CAMLLEX regular expressions *)
| YaccNonTerminal (*r CAMLYACC non-terminal symbols *)
| YaccTerminal (*r CAMLYACC terminal symbols, i.e. tokens *)
type index_entry = { e_name : string; e_type : entry_type }
module Idmap : Map.S with type key = index_entry
module Stringset : Set.S with type elt = string
module Whereset : Set.S with type elt = where
val used : Whereset.t Idmap.t ref
val defined : Whereset.t Idmap.t ref
(*s The two following functions fill the above tables for a given file. *)
val cross_implem : string -> string -> unit
val cross_interf : string -> string -> unit
(* cross-referencing lex and yacc description files *)
val cross_lex : string -> string -> unit
val cross_yacc : string -> string -> unit
|