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];