emitter.cpp
来自「编译原理实验将简单中缀算术表达式变换成后缀形式」· C++ 代码 · 共 66 行
CPP
66 行
//emitter.c
#include "stdafx.h"
#include "global.h"
bool isID=0;
void emit(int t,int tval)
{
int a,b;
switch(t)
{
case'+':
case'-':
case'*':
case'/':
if(mode)
{
fprintf(fp2,"%c ",t);
if(!isID)
{Pop(S,b);Pop(S,a);Push(S,Operate(a,t,b));}
}
else
fprintf(fp2,"%c\n",t);
break;
case DIV:
if(mode)
{
fprintf(fp2,"DIV ");
if(!isID)
{Pop(S,b);Pop(S,a);Push(S,Operate(a,'/',b));}
}
else
fprintf(fp2,"DIV\n");
break;
case MOD:
if(mode)
{
fprintf(fp2,"MOD ");
if(!isID)
{Pop(S,b);Pop(S,a);Push(S,Operate(a,'@',b));}
}
else
fprintf(fp2,"MOD\n");
break;
case NUM:
if(mode)
{
fprintf(fp2,"%d ",tval);
if(!isID)
Push(S,tval);
}
else
fprintf(fp2,"push %d\n",tval);
break;
case ID:
isID=1;
if(mode)
fprintf(fp2,"%s ",symtable[tval].lexptr);
else
fprintf(fp2,"rvalue %s\n",symtable[tval].lexptr);
break;
default:
fprintf(fp2,"token %d,tokenval %d\n",t,tval);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?