ebe1e92c9551e1ae322d8bab76d8d49cea901efe
[bpt/coccinelle.git] / bundles / menhirLib / menhir-20120123 / src / stretch.mli
1 (**************************************************************************)
2 (* *)
3 (* Menhir *)
4 (* *)
5 (* François Pottier, INRIA Rocquencourt *)
6 (* Yann Régis-Gianas, PPS, Université Paris Diderot *)
7 (* *)
8 (* Copyright 2005-2008 Institut National de Recherche en Informatique *)
9 (* et en Automatique. All rights reserved. This file is distributed *)
10 (* under the terms of the Q Public License version 1.0, with the change *)
11 (* described in file LICENSE. *)
12 (* *)
13 (**************************************************************************)
14
15 (* $Id: stretch.mli,v 1.4 2005/12/01 16:20:07 regisgia Exp $ *)
16
17 (* A stretch is a fragment of a source file. It holds the file name,
18 the line number, and the line count (that is, the length) of the
19 fragment. These are used for generating #line directives when the
20 fragment is copied to an output file. It also holds the textual
21 content of the fragment, as a string. The [raw_content] field holds
22 the text that was found in the source file, while the [content]
23 field holds the same text after transformation by the lexer (which
24 substitutes keywords, inserts padding, etc.). *)
25
26 type t = {
27 stretch_filename : string;
28 stretch_linenum : int;
29 stretch_linecount : int;
30 stretch_raw_content : string;
31 stretch_content : string;
32 stretch_keywords : Keyword.keyword Positions.located list
33 }
34
35 (* An Objective Caml type is either a stretch (if it was found in some
36 source file) or a string (if it was inferred via [Infer]). *)
37
38 type ocamltype =
39 | Declared of t
40 | Inferred of string
41