Prs -> Parse

This commit is contained in:
xmm15 2020-02-18 20:10:39 -06:00
parent be599728c7
commit 36737c09e1
19 changed files with 334 additions and 335 deletions

Binary file not shown.

View file

@ -1,4 +1,4 @@
U0 AsmPrsInsFlags(CCompCtrl *cc,CInst *tmpins) U0 AsmParseInsFlags(CCompCtrl *cc,CInst *tmpins)
{ {
I64 i; I64 i;
while (TRUE) { while (TRUE) {
@ -117,7 +117,7 @@ U0 AsmHashLoad()
else if (cc->token!=';') else if (cc->token!=';')
LexExcept(cc,"Expecting ',' at "); LexExcept(cc,"Expecting ',' at ");
AsmPrsInsFlags(cc,tmpins); AsmParseInsFlags(cc,tmpins);
tmpins->uasm_slash_val=tmpins->slash_val; tmpins->uasm_slash_val=tmpins->slash_val;
if (tmpins->flags&IEF_STI_LIKE && tmpins->slash_val!=SV_I_REG) if (tmpins->flags&IEF_STI_LIKE && tmpins->slash_val!=SV_I_REG)

View file

@ -32,10 +32,10 @@ extern U0 ParseStreamBlk(CCompCtrl *cc);
extern CHashClass *ParseType(CCompCtrl *cc,CHashClass **_tmpc1, extern CHashClass *ParseType(CCompCtrl *cc,CHashClass **_tmpc1,
I64 *_mode,CMemberList *tmpm,U8 **_ident,CHashFun **_fun_ptr, I64 *_mode,CMemberList *tmpm,U8 **_ident,CHashFun **_fun_ptr,
CHashExport **_tmpex,CArrayDim *tmpad,I64 fsp_flags); CHashExport **_tmpex,CArrayDim *tmpad,I64 fsp_flags);
extern I64 ParseUnaryModifier(CCompCtrl *cc,CPrsStack *ps, extern I64 ParseUnaryModifier(CCompCtrl *cc,CParseStack *ps,
CMemberList **_local_var,CArrayDim **_tmpad,I64 *unary_post_prec); CMemberList **_local_var,CArrayDim **_tmpad,I64 *unary_post_prec);
extern I64 ParseUnaryTerm( extern I64 ParseUnaryTerm(
CCompCtrl *cc,CPrsStack *ps,CMemberList **_local_var,CArrayDim **_tmpad, CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var,CArrayDim **_tmpad,
I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec); I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec);
extern U0 ParseVarInit2(CCompCtrl *cc,U8 **_dst,CHashClass *tmpc, extern U0 ParseVarInit2(CCompCtrl *cc,U8 **_dst,CHashClass *tmpc,
CArrayDim *tmpad,U8 *data_addr_rip,U8 **_base,Bool data_heap,I64 pass); CArrayDim *tmpad,U8 *data_addr_rip,U8 **_base,Bool data_heap,I64 pass);

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -58,7 +58,7 @@ CCompCtrl *CompCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL)
U0 CompCtrlDel(CCompCtrl *cc) U0 CompCtrlDel(CCompCtrl *cc)
{//Free CCompCtrl. {//Free CCompCtrl.
while (LexFilePop(cc)); while (LexFilePop(cc));
LinkedListDel(cc->lex_prs_stack); LinkedListDel(cc->lex_parse_stack);
LinkedListDel(cc->htc.next); LinkedListDel(cc->htc.next);
Free(cc->ps); Free(cc->ps);
Free(cc->cur_str); Free(cc->cur_str);

View file

@ -16,14 +16,14 @@ U0 LexPush(CCompCtrl *cc)
if (cc->lex_include_stack->last_U16) if (cc->lex_include_stack->last_U16)
cc->flags|=CCF_USE_LAST_U16; cc->flags|=CCF_USE_LAST_U16;
tmpf=MAllocIdent(cc->lex_include_stack); tmpf=MAllocIdent(cc->lex_include_stack);
tmpf->next=cc->lex_prs_stack; tmpf->next=cc->lex_parse_stack;
cc->lex_prs_stack=tmpf; cc->lex_parse_stack=tmpf;
} }
U0 LexPopRestore(CCompCtrl *cc) U0 LexPopRestore(CCompCtrl *cc)
{//Restore token-stream saved-point. {//Restore token-stream saved-point.
//Bad things can happen if you cross an #include file boundary. //Bad things can happen if you cross an #include file boundary.
CLexFile *tmpf=cc->lex_prs_stack; CLexFile *tmpf=cc->lex_parse_stack;
cc->cur_buf_ptr=tmpf->buf_ptr; cc->cur_buf_ptr=tmpf->buf_ptr;
if (cc->last_U16=tmpf->last_U16) if (cc->last_U16=tmpf->last_U16)
cc->flags|=CCF_USE_LAST_U16; cc->flags|=CCF_USE_LAST_U16;
@ -31,14 +31,14 @@ U0 LexPopRestore(CCompCtrl *cc)
cc->flags&=~CCF_USE_LAST_U16; cc->flags&=~CCF_USE_LAST_U16;
MemCopy(cc->lex_include_stack(U8 *)+sizeof(U8 *),tmpf(U8 *)+sizeof(U8 *), MemCopy(cc->lex_include_stack(U8 *)+sizeof(U8 *),tmpf(U8 *)+sizeof(U8 *),
sizeof(CLexFile)-sizeof(U8 *)); sizeof(CLexFile)-sizeof(U8 *));
cc->lex_prs_stack=tmpf->next; cc->lex_parse_stack=tmpf->next;
Free(tmpf); Free(tmpf);
} }
U0 LexPopNoRestore(CCompCtrl *cc) U0 LexPopNoRestore(CCompCtrl *cc)
{//Don't restore token-stream saved-point. {//Don't restore token-stream saved-point.
CLexFile *tmpf=cc->lex_prs_stack; CLexFile *tmpf=cc->lex_parse_stack;
cc->lex_prs_stack=tmpf->next; cc->lex_parse_stack=tmpf->next;
Free(tmpf); Free(tmpf);
} }

View file

@ -33,9 +33,9 @@ args.
CIntermediateCode *tmpi,*tmpi1,*tmpi2,*tmpi3,*tmpi_push, CIntermediateCode *tmpi,*tmpi1,*tmpi2,*tmpi3,*tmpi_push,
*last_with_class=NULL; *last_with_class=NULL;
CCodeMisc *lb,*lb1,*lb2; CCodeMisc *lb,*lb1,*lb2;
CPrsStack *ps; CParseStack *ps;
if (!(ps=cc->ps)) if (!(ps=cc->ps))
ps=cc->ps=MAlloc(sizeof(CPrsStack)); ps=cc->ps=MAlloc(sizeof(CParseStack));
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
tmpi=cc->coc.coc_head.next; tmpi=cc->coc.coc_head.next;
@ -939,7 +939,7 @@ args.
tmpi2 = OptLead1(tmpi); tmpi2 = OptLead1(tmpi);
tmpi1->ic_flags |= tmpi->ic_flags | tmpi2->ic_flags; tmpi1->ic_flags |= tmpi->ic_flags | tmpi2->ic_flags;
OptSetNOP1(tmpi2); //CALL_END OptSetNOP1(tmpi2); //CALL_END
OptSetNOP1(tmpi); //POPCNT OptSetNOP1(tmpi); //POPCNT
} }
break; break;
case IC_LBTS: case IC_LBTS:

View file

@ -9,7 +9,7 @@ U0 OptPass3(CCompCtrl *cc,COptReg *reg_offsets)
COptMemberVar *mv=NULL; COptMemberVar *mv=NULL;
CAOT *tmpaot; CAOT *tmpaot;
CAOTImportExport *tmpie; CAOTImportExport *tmpie;
CPrsStack *ps=cc->ps; CParseStack *ps=cc->ps;
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;

View file

@ -138,7 +138,7 @@ U0 OptPass4(CCompCtrl *cc,COptReg *reg_offsets,I64 *_type)
I64 code,i; I64 code,i;
Bool dead_code=FALSE; Bool dead_code=FALSE;
CCodeMisc *lb; CCodeMisc *lb;
CPrsStack *ps=cc->ps; CParseStack *ps=cc->ps;
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;

View file

@ -2,7 +2,7 @@ U0 OptPass5(CCompCtrl *cc)
{ {
CIntermediateCode *tmpi,*tmpi1; CIntermediateCode *tmpi,*tmpi1;
I64 code,i; I64 code,i;
CPrsStack *ps=cc->ps; CParseStack *ps=cc->ps;
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;

View file

@ -25,7 +25,7 @@ Bool OptIC6(CIntermediateCode *tmpi)
return FALSE; return FALSE;
} }
U0 OptPass6Lag(CCompCtrl *cc,CPrsStack *ps,CIntermediateCode *tmpi, U0 OptPass6Lag(CCompCtrl *cc,CParseStack *ps,CIntermediateCode *tmpi,
I64 *_stack_ptr,I64 reg_stack_size,I64 *_clobbered_reg_mask) I64 *_stack_ptr,I64 reg_stack_size,I64 *_clobbered_reg_mask)
{ {
I64 stack_ptr=*_stack_ptr,code, I64 stack_ptr=*_stack_ptr,code,
@ -97,7 +97,7 @@ U0 OptPass6(CCompCtrl *cc)
{ {
CIntermediateCode *tmpi,*tmpi_next,*tmpil1,*tmpil2,*old_tmpil2; CIntermediateCode *tmpi,*tmpi_next,*tmpil1,*tmpil2,*old_tmpil2;
I64 stack_ptr=0,reg_stack_size,clobbered_reg_mask=REGG_CLOBBERED; I64 stack_ptr=0,reg_stack_size,clobbered_reg_mask=REGG_CLOBBERED;
CPrsStack *ps=cc->ps; CParseStack *ps=cc->ps;
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
if (Bt(&cc->opts,OPTf_NO_REG_VAR) || cc->flags&CCF_NO_REG_OPT) if (Bt(&cc->opts,OPTf_NO_REG_VAR) || cc->flags&CCF_NO_REG_OPT)

View file

@ -62,7 +62,7 @@ CIntermediateCode *ParseAddOp(CCompCtrl *cc,I64 stack_op,CHashClass *tmpc)
return tmpi; return tmpi;
} }
U0 ParseExpression2(CCompCtrl *cc,I64 *_max_prec,CPrsStack *ps) U0 ParseExpression2(CCompCtrl *cc,I64 *_max_prec,CParseStack *ps)
{ {
I64 i,cur_op,stack_op,state,max_prec=PREC_NULL,unary_pre_prec,paren_prec, I64 i,cur_op,stack_op,state,max_prec=PREC_NULL,unary_pre_prec,paren_prec,
unary_post_prec,left_prec=PREC_MAX; unary_post_prec,left_prec=PREC_MAX;
@ -261,15 +261,15 @@ pe_done:
*_max_prec=max_prec; *_max_prec=max_prec;
} }
Bool ParseExpression(CCompCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStack *_ps=NULL) Bool ParseExpression(CCompCtrl *cc,I64 *_max_prec,Bool end_exp,CParseStack *_ps=NULL)
{ {
Bool res=TRUE; Bool res=TRUE;
I64 old_flags=cc->flags; I64 old_flags=cc->flags;
CPrsStack *ps; CParseStack *ps;
if (_ps) if (_ps)
ps=_ps; ps=_ps;
else { else {
ps=MAlloc(sizeof(CPrsStack)); ps=MAlloc(sizeof(CParseStack));
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
} }
@ -380,7 +380,7 @@ U0 ParseOffsetOf(CCompCtrl *cc)
ICAdd(cc,IC_IMM_I64,i,cmp.internal_types[RT_I64]); ICAdd(cc,IC_IMM_I64,i,cmp.internal_types[RT_I64]);
} }
I64 ParseFunCall(CCompCtrl *cc,CPrsStack *ps,Bool indirect,CHashFun *tmpf) I64 ParseFunCall(CCompCtrl *cc,CParseStack *ps,Bool indirect,CHashFun *tmpf)
{ {
I64 i,argc_count,default_val; I64 i,argc_count,default_val;
Bool is_first_arg=TRUE,needs_right_paren,is_print,is_putchars, Bool is_first_arg=TRUE,needs_right_paren,is_print,is_putchars,
@ -590,7 +590,7 @@ I64 ParseFunCall(CCompCtrl *cc,CPrsStack *ps,Bool indirect,CHashFun *tmpf)
return PE_UNARY_MODIFIERS; return PE_UNARY_MODIFIERS;
} }
I64 ParseUnaryTerm(CCompCtrl *cc,CPrsStack *ps,CMemberList **_local_var, I64 ParseUnaryTerm(CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var,
CArrayDim **_tmpad,I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec) CArrayDim **_tmpad,I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec)
{ {
I64 i,j; I64 i,j;
@ -957,7 +957,7 @@ pu_export_sys_sym:
LexExcept(cc,"Missing expression at "); LexExcept(cc,"Missing expression at ");
} }
I64 ParseUnaryModifier(CCompCtrl *cc,CPrsStack *ps,CMemberList **_local_var, I64 ParseUnaryModifier(CCompCtrl *cc,CParseStack *ps,CMemberList **_local_var,
CArrayDim **_tmpad,I64 *unary_post_prec) CArrayDim **_tmpad,I64 *unary_post_prec)
{ {
CHashClass *tmpc,*tmpc1; CHashClass *tmpc,*tmpc1;

View file

@ -1,24 +1,24 @@
U0 ParsePush(CPrsStack *ps,I64 val) U0 ParsePush(CParseStack *ps,I64 val)
{ {
ps->stack[++ps->ptr]=val; ps->stack[++ps->ptr]=val;
} }
I64 ParsePop(CPrsStack *ps) I64 ParsePop(CParseStack *ps)
{ {
return ps->stack[ps->ptr--]; return ps->stack[ps->ptr--];
} }
U0 ParsePush2(CPrsStack *ps,I64 val) U0 ParsePush2(CParseStack *ps,I64 val)
{ {
ps->stack2[++ps->ptr2]=val; ps->stack2[++ps->ptr2]=val;
} }
I64 ParsePop2(CPrsStack *ps) I64 ParsePop2(CParseStack *ps)
{ {
return ps->stack2[ps->ptr2--]; return ps->stack2[ps->ptr2--];
} }
U0 ParsePopDeref(CPrsStack *ps) U0 ParsePopDeref(CParseStack *ps)
{ {
I64 i=ParsePop(ps); I64 i=ParsePop(ps);
CHashClass *tmpc=ParsePop(ps); CHashClass *tmpc=ParsePop(ps);

View file

@ -1175,13 +1175,13 @@ sm_not_keyword_afterall:
LexExcept(cc,"Use Asm Blk at "); LexExcept(cc,"Use Asm Blk at ");
if (cc->token!=',') goto sm_done; if (cc->token!=',') goto sm_done;
} else } else
goto sm_prs_exp; goto sm_parse_exp;
} }
fsp_flags&=FSF_ASM; fsp_flags&=FSF_ASM;
} }
} else {//Ident, not in hash table } else {//Ident, not in hash table
if (cc->local_var_entry) if (cc->local_var_entry)
goto sm_prs_exp; goto sm_parse_exp;
if (!(g_lb=COCGoToLabelFind(cc,cc->cur_str))) { if (!(g_lb=COCGoToLabelFind(cc,cc->cur_str))) {
g_lb=COCMiscNew(cc,CMT_GOTO_LABEL); g_lb=COCMiscNew(cc,CMT_GOTO_LABEL);
g_lb->str=cc->cur_str; g_lb->str=cc->cur_str;
@ -1202,7 +1202,7 @@ sm_not_keyword_afterall:
ParseFunCall(cc,NULL,FALSE,NULL); ParseFunCall(cc,NULL,FALSE,NULL);
goto sm_semicolon; goto sm_semicolon;
} else if (cc->token!=TK_EOF) {//Non-cur_str symbol, num or something } else if (cc->token!=TK_EOF) {//Non-cur_str symbol, num or something
sm_prs_exp: sm_parse_exp:
if (!ParseExpression(cc,NULL,TRUE)) if (!ParseExpression(cc,NULL,TRUE))
throw('Compiler'); throw('Compiler');
sm_semicolon: sm_semicolon:

Binary file not shown.

View file

@ -1068,7 +1068,6 @@ $LK,"GVF_IMPORT",A="FL:::/Kernel/KernelA.HH,916"$
$LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HH,753"$ $LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HH,753"$
$LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HH,723"$ $LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HH,723"$
$LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HH,1786"$ $LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HH,1786"$
$LK,"CPrsStack",A="FL:::/Kernel/KernelA.HH,1736"$
$LK,"LAPIC_ICR_LOW",A="FL:::/Kernel/KernelA.HH,564"$ $LK,"LAPIC_ICR_LOW",A="FL:::/Kernel/KernelA.HH,564"$
$LK,"mouse",A="FL:::/Kernel/KGlobals.CC,24"$ $LK,"mouse",A="FL:::/Kernel/KGlobals.CC,24"$
$LK,"D3Zero",A="FL:::/Kernel/KernelB.HH,148"$ $LK,"D3Zero",A="FL:::/Kernel/KernelB.HH,148"$
@ -2133,6 +2132,7 @@ $LK,"inf",A="FL:::/Kernel/KernelA.HH,49"$
$LK,"sys_macro_head",A="FL:::/Kernel/KGlobals.CC,4"$ $LK,"sys_macro_head",A="FL:::/Kernel/KGlobals.CC,4"$
$LK,"XTalk",A="FL:::/Kernel/Job.CC,445",BI=461$ $LK,"XTalk",A="FL:::/Kernel/Job.CC,445",BI=461$
$LK,"SYS_ENTER_LONG_MODE",A="FL:::/Kernel/KStart64.CC,54"$ $LK,"SYS_ENTER_LONG_MODE",A="FL:::/Kernel/KStart64.CC,54"$
$LK,"CParseStack",A="FL:::/Kernel/KernelA.HH,1736"$
$LK,"eps",A="FL:::/Kernel/KernelA.HH,59"$ $LK,"eps",A="FL:::/Kernel/KernelA.HH,59"$
$LK,"RLF_PATCHED",A="FL:::/Kernel/KernelA.HH,496"$ $LK,"RLF_PATCHED",A="FL:::/Kernel/KernelA.HH,496"$
$LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/KTask.CC,286",BI=462$ $LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/KTask.CC,286",BI=462$

View file

@ -1733,7 +1733,7 @@ class CIntermediateCode:CIntermediateCodeBase
#assert !($$&7) #assert !($$&7)
}; };
class CPrsStack class CParseStack
{ {
I64 ptr, I64 ptr,
stack[255], stack[255],
@ -2248,7 +2248,7 @@ public class CCompCtrl
CCodeMisc *lb_leave; CCodeMisc *lb_leave;
U8 *cur_buf_ptr; U8 *cur_buf_ptr;
CLexFile *lex_include_stack, CLexFile *lex_include_stack,
*lex_prs_stack, *lex_parse_stack,
*fun_lex_file; *fun_lex_file;
CStreamBlk *next_stream_blk,*last_stream_blk; CStreamBlk *next_stream_blk,*last_stream_blk;
CAOT *aot; CAOT *aot;
@ -2263,7 +2263,7 @@ public class CCompCtrl
dont_push_float,pad[4]; dont_push_float,pad[4];
CCodeCtrl coc; CCodeCtrl coc;
CPrsStack *ps; CParseStack *ps;
CAOTCtrl *aotc; CAOTCtrl *aotc;
I64 aot_depth,prompt_line; I64 aot_depth,prompt_line;
#assert !($$&7) #assert !($$&7)
@ -3994,4 +3994,3 @@ class CProgress
#define PRINTF_NEG_E 0x400 #define PRINTF_NEG_E 0x400
#define PRINTF_NEG_AUX_FORMAT_NUM 0x800 #define PRINTF_NEG_AUX_FORMAT_NUM 0x800


Binary file not shown.