3 | VarOrFunc
of string * Ast_c.exp_type
4 | TypeDef
of string * Ast_c.fullType
5 | StructUnionNameDef
of
6 string * (Ast_c.structUnion
* Ast_c.structType
) Ast_c.wrap
8 type environment
= namedef list list
(* cos have nested scope, so nested list*)
10 val initial_env
: environment
12 (* In fact do via side effects. Fill in the type information that was put
13 * to None during parsing
15 val annotate_program
:
16 environment
-> bool (*true if types needed*) -> Ast_c.toplevel list
->
17 (Ast_c.toplevel
* environment
Common.pair
) list