diff options
Diffstat (limited to 'cparser')
-rw-r--r-- | cparser/Builtins.ml | 8 | ||||
-rw-r--r-- | cparser/Builtins.mli | 1 | ||||
-rw-r--r-- | cparser/Makefile | 4 |
3 files changed, 9 insertions, 4 deletions
diff --git a/cparser/Builtins.ml b/cparser/Builtins.ml index 020452f9..8eb1abfd 100644 --- a/cparser/Builtins.ml +++ b/cparser/Builtins.ml @@ -20,14 +20,17 @@ open Cutil let env = ref Env.empty let idents = ref [] +let decls = ref [] let environment () = !env let identifiers () = !idents +let declarations () = List.rev !decls let add_typedef (s, ty) = let (id, env') = Env.enter_typedef !env s ty in env := env'; - idents := id :: !idents + idents := id :: !idents; + decls := {gdesc = Gtypedef(id, ty); gloc = no_loc} :: !decls let add_function (s, (res, args, va)) = let ty = @@ -36,7 +39,8 @@ let add_function (s, (res, args, va)) = va, []) in let (id, env') = Env.enter_ident !env s Storage_extern ty in env := env'; - idents := id :: !idents + idents := id :: !idents; + decls := {gdesc = Gdecl(Storage_extern, id, ty, None); gloc = no_loc} :: !decls type t = { typedefs: (string * C.typ) list; diff --git a/cparser/Builtins.mli b/cparser/Builtins.mli index be0d941f..7f9d78a9 100644 --- a/cparser/Builtins.mli +++ b/cparser/Builtins.mli @@ -15,6 +15,7 @@ val environment: unit -> Env.t val identifiers: unit -> C.ident list +val declarations: unit -> C.globdecl list type t = { typedefs: (string * C.typ) list; diff --git a/cparser/Makefile b/cparser/Makefile index df1d6047..837bda87 100644 --- a/cparser/Makefile +++ b/cparser/Makefile @@ -11,9 +11,9 @@ INTFS=C.mli SRCS=Errors.ml Cabs.ml Cabshelper.ml Parse_aux.ml Parser.ml Lexer.ml \ Machine.ml \ - Env.ml Cprint.ml Cutil.ml Ceval.ml Cleanup.ml \ + Env.ml Cprint.ml Cutil.ml Ceval.ml \ Builtins.ml GCC.ml \ - Elab.ml Rename.ml \ + Cleanup.ml Elab.ml Rename.ml \ Transform.ml \ Unblock.ml SimplExpr.ml AddCasts.ml StructByValue.ml StructAssign.ml \ Bitfields.ml \ |