import U8                       *Doc2PlainText(CDoc *doc, CDocEntry *doc_e);
import U0                        DocBinsValidate(CDoc *doc);
import U0                        DocDel(CDoc *doc);
import U0                        DocLoad(CDoc *doc, U8 *src2, I64 size);
import CDoc                     *DocNew(U8 *filename=NULL, CTask *task=NULL);
import CDocEntry        *DocPrint(CDoc *doc=NULL, U8 *format, ...);
import CDocEntry        *DocPutLine(CDoc *doc, CDocEntry *doc_e);
import I64                       DocSize(CDoc *doc);
import Bool                      DocWrite(CDoc *doc, Bool prompt=FALSE);
extern U8  *CmdLinePrompt();
extern I64  HashEntrySize2(CHashSrcSym *tmph);
extern Bool     IsLexExpression2Bin(CCompCtrl *cc, U8 **_machine_code);
extern I64      Lex(CCompCtrl *cc);
extern I64      LexExpression(CCompCtrl *cc);
extern I64      LexCharGet(CCompCtrl *cc);
extern CCodeMisc                        *OptLabelFwd(CCodeMisc *lb);
extern CIntermediateCode        *OptPass012(CCompCtrl *cc);
extern U0                                        OptPass3(CCompCtrl *cc,COptReg *reg_offsets);
extern U0                                        OptPass4(CCompCtrl *cc,COptReg *reg_offsets,I64 *_type);
extern U0                                        OptPass5(CCompCtrl *cc);
extern U0                                        OptPass6(CCompCtrl *cc);
extern I64                                       OptPass789A(CCompCtrl *cc, COptReg *reg_offsets, U8 *buf, CDebugInfo **_debug);
extern CHashClass       *ParseClass(CCompCtrl *cc, I64 keyword, I64 fsp_flags, Bool is_extern);
extern CHashFun         *ParseFunJoin(CCompCtrl *cc, CHashClass *tmp_return, U8 *name, I64 fsp_flags);
extern I64                       ParseKeyWord(CCompCtrl *cc);
extern Bool                      ParseStatement(CCompCtrl *cc, I64 try_count=0, CCodeMisc *lb_break=NULL, I64 comp_flags=CMPF_PRS_SEMICOLON);
extern U0                        ParseStreamBlk(CCompCtrl *cc);
extern CHashClass       *ParseType(CCompCtrl *cc, CHashClass **_tmpc1,
                                                           I64 *_mode, CMemberList *tmpm, U8 **_ident, CHashFun **_fun_ptr,
                                                           CHashExport **_tmpex, CArrayDim *tmpad, I64 fsp_flags);
extern I64                       ParseUnaryModifier(CCompCtrl *cc, CParseStack *ps,
                                                                           CMemberList **_local_var, CArrayDim **_tmpad, I64 *unary_post_prec);
extern I64                       ParseUnaryTerm(CCompCtrl *cc, CParseStack *ps, CMemberList **_local_var, CArrayDim **_tmpad,
                                                                   I64 *max_prec, I64 *unary_pre_prec, I64 *paren_prec);
extern U0                        ParseVarInit2(CCompCtrl *cc, U8 **_dst, CHashClass *tmpc,
                                                                  CArrayDim *tmpad, U8 *data_addr_rip, U8 **_base, Bool data_heap, I64 pass);
_extern CMP_TEMPLATES                           U32 comp_templates[1];
_extern CMP_TEMPLATES_DONT_POP          U32 comp_templates_dont_pop[1];
_extern CMP_TEMPLATES_DONT_PUSH2        U32 comp_templates_dont_push2[1];
_extern CMP_TEMPLATES_DONT_PUSH         U32 comp_templates_dont_push[1];
_extern CMP_TEMPLATES_DONT_PUSH_POP U32 comp_templates_dont_push_pop[1];