📄 emitter.cpp
字号:
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -