} } gendo(sto,lev-table[i].level,table[i].adr); getsymdo; else if (sym==ident) { } else { } error(30); i2=position(id,*ptx); if (i2!=0) { } else { } error(11); gendo(lod,lev-table[i].level,table[i].adr); gendo(sto,lev-table[i2].level,table[i2].adr); ... } else { } error(13); } } 7.10 增加字符打印函数writechar() 文法
语句 ::== writechar ( ident [,ident ] )
7.10.1 增加关键字
enum symbol {... writecharsym..} init(){ ...
strcpy(&(word[i++][0]),\wsym[i++]=writecharsym; ... }
7.10.2 增加opr 17指令操作 void interpret() { ... case 17: ... }
7.10.3 修改statement,增加语句分支
printf(\fprintf(fa2,\t--; break;
else if (sym==writecharsym) { getsymdo; if(sym==lparen) { getsymdo; if (sym==ident) { i=position(id,*ptx); if (i!=0) { } if (table[i].kind==character) { } else { } error(35); gendo(lod,lev-table[i].level,table[i].adr); gendo(opr,0,17); getsymdo; } else { } error(11); else { } error(35); } } if(sym!=rparen) { } else { } gendo(opr,0,15); /* 输出换行*/ getsymdo; error(33);/* 右括号*/