aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/pre_parser_aux.ml
blob: c6b48608c657ff6fed77a8568d61c196023d13a6 (plain)
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
(* *********************************************************************)
(*                                                                     *)
(*              The Compcert verified compiler                         *)
(*                                                                     *)
(*          Jacques-Henri Jourdan, INRIA Paris-Rocquencourt            *)
(*                                                                     *)
(*  Copyright Institut National de Recherche en Informatique et en     *)
(*  Automatique.  All rights reserved.  This file is distributed       *)
(*  under the terms of the GNU General Public License as published by  *)
(*  the Free Software Foundation, either version 2 of the License, or  *)
(*  (at your option) any later version.  This file is also distributed *)
(*  under the terms of the INRIA Non-Commercial License Agreement.     *)
(*                                                                     *)
(* *********************************************************************)

type identifier_type =
  | VarId
  | TypedefId
  | OtherId

(* These functions push and pop a context on the contexts stack. *)
let open_context:(unit -> unit) ref = ref (fun () -> assert false)
let close_context:(unit -> unit) ref = ref (fun () -> assert false)

(* Applying once this functions saves the whole contexts stack, and
   applying it the second time restores it.

   This is mainly used to rollback the context stack to a previous
   state. This is usefull for example when we pop too much contexts at
   the end of the first branch of an if statement. See
   pre_parser.mly. *)
let save_contexts_stk:(unit -> (unit -> unit)) ref = ref (fun _ -> assert false)

(* Change the context at the top of the top stack of context, by
   changing an identifier to be a varname or a typename*)
let declare_varname:(string -> unit) ref = ref (fun _ -> assert false)
let declare_typename:(string -> unit) ref = ref (fun _ -> assert false)