全文预览

天津理工大学编译原理实验3:语义分析与中间代码生成

上传者:梦&殇 |  格式:doc  |  页数:17 |  大小:380KB

文档介绍
er);//用P规约该表达式,有效变量在E的endchar中,需要找到E的位置,即下面的操作Р string st=stack[po].endchar;//对应 F Р po-=2;Р string se=stack[po].endchar;//在规约之前记录下要规约的字符所代表的变量。对应 T Р Р tsize++;//新增临时变量Р t[tsize].num=tsize+1;//下面四个表达式是按照上面的规约式进行的赋值Р t[tsize].operate='+';Р t[tsize].var1=se;Р t[tsize].var2=st;Р cout<<"\t("<<t[tsize].operate<<","<<t[tsize].var1<<","<<t[tsize].var2<<",t"<<t[tsize].num<<")";Р Р int p=(*pointer_state);Р p-=3;Р char second=state_stack[p];Р int i=getraw(second);Р int j=getcol('E');Р char c_out=getraw_content(table[i][j]);Р cout<<"\tr1:用E-->E+T规约且"; Р popstack(state_stack,pointer_state,3);Р popstackc(stack,pointer,3);Р char c='E';//str[(*index)];Р pushstack(stack,pointer,state_stack,pointer_state,c,c_out,1);Р Р string s=get_tx(t[tsize].num);Р stack[(*pointer)].endchar=s;//把保存E+T规约的结果的变量保存至当前字符的终结符

收藏

分享

举报
下载此文档