type token =
  | TUnknown of (Ast_cpp.info)
  | EOF of (Ast_cpp.info)
  | TCommentSpace of (Ast_cpp.info)
  | TCommentNewline of (Ast_cpp.info)
  | TComment of (Ast_cpp.info)
  | TComment_Pp of ((Token_cpp.cppcommentkind * Ast_cpp.info))
  | TComment_Cpp of ((Token_cpp.cpluspluscommentkind * Ast_cpp.info))
  | TInt of (string * Ast_cpp.info)
  | TFloat of ((string * Ast_cpp.floatType) * Ast_cpp.info)
  | TChar of ((string * Ast_cpp.isWchar) * Ast_cpp.info)
  | TString of ((string * Ast_cpp.isWchar) * Ast_cpp.info)
  | TIdent of (string * Ast_cpp.info)
  | TIdent_Typedef of (string * Ast_cpp.info)
  | TOPar of (Ast_cpp.info)
  | TCPar of (Ast_cpp.info)
  | TOBrace of (Ast_cpp.info)
  | TCBrace of (Ast_cpp.info)
  | TOCro of (Ast_cpp.info)
  | TCCro of (Ast_cpp.info)
  | TDot of (Ast_cpp.info)
  | TComma of (Ast_cpp.info)
  | TPtrOp of (Ast_cpp.info)
  | TInc of (Ast_cpp.info)
  | TDec of (Ast_cpp.info)
  | TAssign of (Ast_cpp.assignOp * Ast_cpp.info)
  | TEq of (Ast_cpp.info)
  | TWhy of (Ast_cpp.info)
  | TTilde of (Ast_cpp.info)
  | TBang of (Ast_cpp.info)
  | TEllipsis of (Ast_cpp.info)
  | TCol of (Ast_cpp.info)
  | TPtVirg of (Ast_cpp.info)
  | TOrLog of (Ast_cpp.info)
  | TAndLog of (Ast_cpp.info)
  | TOr of (Ast_cpp.info)
  | TXor of (Ast_cpp.info)
  | TAnd of (Ast_cpp.info)
  | TEqEq of (Ast_cpp.info)
  | TNotEq of (Ast_cpp.info)
  | TInfEq of (Ast_cpp.info)
  | TSupEq of (Ast_cpp.info)
  | TShl of (Ast_cpp.info)
  | TShr of (Ast_cpp.info)
  | TPlus of (Ast_cpp.info)
  | TMinus of (Ast_cpp.info)
  | TMul of (Ast_cpp.info)
  | TDiv of (Ast_cpp.info)
  | TMod of (Ast_cpp.info)
  | TInf of (Ast_cpp.info)
  | TSup of (Ast_cpp.info)
  | Tchar of (Ast_cpp.info)
  | Tshort of (Ast_cpp.info)
  | Tint of (Ast_cpp.info)
  | Tdouble of (Ast_cpp.info)
  | Tfloat of (Ast_cpp.info)
  | Tlong of (Ast_cpp.info)
  | Tunsigned of (Ast_cpp.info)
  | Tsigned of (Ast_cpp.info)
  | Tvoid of (Ast_cpp.info)
  | Tauto of (Ast_cpp.info)
  | Tregister of (Ast_cpp.info)
  | Textern of (Ast_cpp.info)
  | Tstatic of (Ast_cpp.info)
  | Ttypedef of (Ast_cpp.info)
  | Tconst of (Ast_cpp.info)
  | Tvolatile of (Ast_cpp.info)
  | Tstruct of (Ast_cpp.info)
  | Tunion of (Ast_cpp.info)
  | Tenum of (Ast_cpp.info)
  | Tbreak of (Ast_cpp.info)
  | Telse of (Ast_cpp.info)
  | Tswitch of (Ast_cpp.info)
  | Tcase of (Ast_cpp.info)
  | Tcontinue of (Ast_cpp.info)
  | Tfor of (Ast_cpp.info)
  | Tdo of (Ast_cpp.info)
  | Tif of (Ast_cpp.info)
  | Twhile of (Ast_cpp.info)
  | Treturn of (Ast_cpp.info)
  | Tgoto of (Ast_cpp.info)
  | Tdefault of (Ast_cpp.info)
  | Tsizeof of (Ast_cpp.info)
  | Trestrict of (Ast_cpp.info)
  | Tasm of (Ast_cpp.info)
  | Ttypeof of (Ast_cpp.info)
  | Tattribute of (Ast_cpp.info)
  | Tinline of (Ast_cpp.info)
  | TDefine of (Ast_cpp.info)
  | TDefParamVariadic of ((string * Ast_cpp.info))
  | TCppEscapedNewline of (Ast_cpp.info)
  | TIdent_Define of ((string * Ast_cpp.info))
  | TOPar_Define of (Ast_cpp.info)
  | TCommentNewline_DefineEndOfMacro of (Ast_cpp.info)
  | TOBrace_DefineInit of (Ast_cpp.info)
  | TInclude of ((string * string * Ast_cpp.info))
  | TIfdef of (Ast_cpp.info)
  | TIfdefelse of (Ast_cpp.info)
  | TIfdefelif of (Ast_cpp.info)
  | TEndif of (Ast_cpp.info)
  | TIfdefBool of ((bool * Ast_cpp.info))
  | TIfdefMisc of ((bool * Ast_cpp.info))
  | TIfdefVersion of ((bool * Ast_cpp.info))
  | TUndef of (string * Ast_cpp.info)
  | TCppDirectiveOther of (Ast_cpp.info)
  | TIdent_MacroStmt of (Ast_cpp.info)
  | TIdent_MacroString of (Ast_cpp.info)
  | TIdent_MacroIterator of ((string * Ast_cpp.info))
  | TIdent_MacroDecl of ((string * Ast_cpp.info))
  | Tconst_MacroDeclConst of (Ast_cpp.info)
  | TCPar_EOL of (Ast_cpp.info)
  | TAny_Action of (Ast_cpp.info)
  | Tclass of (Ast_cpp.info)
  | Tthis of (Ast_cpp.info)
  | Tnew of (Ast_cpp.info)
  | Tdelete of (Ast_cpp.info)
  | Ttemplate of (Ast_cpp.info)
  | Ttypeid of (Ast_cpp.info)
  | Ttypename of (Ast_cpp.info)
  | Tcatch of (Ast_cpp.info)
  | Ttry of (Ast_cpp.info)
  | Tthrow of (Ast_cpp.info)
  | Toperator of (Ast_cpp.info)
  | Tpublic of (Ast_cpp.info)
  | Tprivate of (Ast_cpp.info)
  | Tprotected of (Ast_cpp.info)
  | Tfriend of (Ast_cpp.info)
  | Tvirtual of (Ast_cpp.info)
  | Tnamespace of (Ast_cpp.info)
  | Tusing of (Ast_cpp.info)
  | Tbool of (Ast_cpp.info)
  | Tfalse of (Ast_cpp.info)
  | Ttrue of (Ast_cpp.info)
  | Twchar_t of (Ast_cpp.info)
  | Tconst_cast of (Ast_cpp.info)
  | Tdynamic_cast of (Ast_cpp.info)
  | Tstatic_cast of (Ast_cpp.info)
  | Treinterpret_cast of (Ast_cpp.info)
  | Texplicit of (Ast_cpp.info)
  | Tmutable of (Ast_cpp.info)
  | Texport of (Ast_cpp.info)
  | TPtrOpStar of (Ast_cpp.info)
  | TDotStar of (Ast_cpp.info)
  | TColCol of (Ast_cpp.info)
  | TOPar_CplusplusInit of (Ast_cpp.info)
  | TInf_Template of (Ast_cpp.info)
  | TSup_Template of (Ast_cpp.info)
  | TOCro_new of (Ast_cpp.info)
  | TCCro_new of (Ast_cpp.info)
  | TInt_ZeroVirtual of (Ast_cpp.info)
  | TIdent_ClassnameInQualifier of (string * Ast_cpp.info)
  | TIdent_ClassnameInQualifier_BeforeTypedef of (string * Ast_cpp.info)
  | TIdent_Templatename of (string * Ast_cpp.info)
  | TIdent_TemplatenameInQualifier of (string * Ast_cpp.info)
  | TIdent_TemplatenameInQualifier_BeforeTypedef of (string * Ast_cpp.info)
  | TIdent_Constructor of (string * Ast_cpp.info)
  | TIdent_TypedefConstr of (string * Ast_cpp.info)
  | Tchar_Constr of (Ast_cpp.info)
  | Tint_Constr of (Ast_cpp.info)
  | Tfloat_Constr of (Ast_cpp.info)
  | Tdouble_Constr of (Ast_cpp.info)
  | Twchar_t_Constr of (Ast_cpp.info)
  | Tshort_Constr of (Ast_cpp.info)
  | Tlong_Constr of (Ast_cpp.info)
  | Tbool_Constr of (Ast_cpp.info)
  | Tsigned_Constr of (Ast_cpp.info)
  | Tunsigned_Constr of (Ast_cpp.info)
  | TColCol_BeforeTypedef of (Ast_cpp.info)
  | TAt_interface of (Ast_cpp.info)
  | TAt_implementation of (Ast_cpp.info)
  | TAt_protocol of (Ast_cpp.info)
  | TAt_class of (Ast_cpp.info)
  | TAt_selector of (Ast_cpp.info)
  | TAt_encode of (Ast_cpp.info)
  | TAt_defs of (Ast_cpp.info)
  | TAt_end of (Ast_cpp.info)
  | TAt_public of (Ast_cpp.info)
  | TAt_private of (Ast_cpp.info)
  | TAt_protected of (Ast_cpp.info)
  | TAt_throw of (Ast_cpp.info)
  | TAt_try of (Ast_cpp.info)
  | TAt_catch of (Ast_cpp.info)
  | TAt_finally of (Ast_cpp.info)
  | TAt_synchronized of (Ast_cpp.info)
  | TAt_property of (Ast_cpp.info)
  | TAt_synthesize of (Ast_cpp.info)
  | TAt_autoreleasepool of (Ast_cpp.info)
  | TAt_dynamic of (Ast_cpp.info)
  | TAt_YES of (Ast_cpp.info)
  | TAt_NO of (Ast_cpp.info)
  | TAt_optional of (Ast_cpp.info)
  | TAt_required of (Ast_cpp.info)
  | TAt_compatibility_alias of (Ast_cpp.info)
  | TAt_Misc of (Ast_cpp.info)
  | TAt of (Ast_cpp.info)

val main :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast_cpp.program
val celem :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast_cpp.toplevel option
val statement :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast_cpp.statement
val expr :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast_cpp.expression
val type_id :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast_cpp.fullType
