📄 emitter.c
字号:
/*** emitter.c ***************************************/
#include "global.h"
void emit(int t, int tval)
{
if(flags=='c'){//输出编译的过程
switch(t){
case '+':case '-':case '*':case '/':
fprintf(fp2,"%c\n",t);break;
case DIV:
fprintf(fp2,"DIV\n"); break;
case MOD:
fprintf(fp2,"MOD\n");break;
case NUM:
fprintf(fp2,"push %d\n", tval); break;
case ID:
fprintf(fp2,"rvalue %s\n", symtable[tval].lexptr);break;
default:
fprintf(fp2,"token %d, tokenval %d\n", t, tval);
}
}
//输出后缀表达式
else if(allnum==1){//有ID存在,输出不可计算的表达式
switch(t) {
case '+': case '-': case '*': case '/':
fprintf(fp2,"%c ",t); break;
case DIV:
fprintf(fp2,"DIV "); break;
case MOD:
fprintf(fp2,"MOD ");break;
case NUM:
fprintf(fp2,"%d ", tval); break;
case ID:
fprintf(fp2,"%s ", symtable[tval].lexptr);break;
default:
fprintf(fp2,"token %d, tokenval %d\n", t, tval);
}
}
else {//可计算的表达式,输出计算后的结果
switch(t){
case '+': case '-': case '*': case '/': case MOD: case DIV:
operate(&Fig,t);break;//运算
case NUM:
Push(&Fig,tval);break;//运算数压栈
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -