15广工编译原理课程设计及实验报告(10)

2019-08-31 09:35

7.11 增加字符输入函数readchar() 文法

语句 ::== readchar(ident [, ident]) 7.11.1 增加关键字

enum symbol writecharsym strcpy(&(word[i++][0]),\wsym[i++]=writecharsym; 增加语句开始符集

statbegsys[readcharsym]=true; 7.11.2 增加字符输入指令 opr 0 16

void interpret(){ ... case 18: ... }

7.11.3 修改statement函数语句处理分支

printf(\fprintf(fa2,\getchar();

scanf(\fprintf(fa2,\t++; break;

int statement() { ...

else if (sym==readcharsym) { getsymdo; if(sym!=lparen) { error(34);

} else { do { getsymdo; if(sym==ident) { i=position(id, *ptx); if (i!=0) { if (table[i].kind==character) {

gendo(opr,0,18);

gendo(sto,lev-table[i].level,table[i].adr); */ }

else

/* 储存到变量

}

} else { }

} else { }

{ }

error(35);

error(11);

error(35);

getsymdo;

}while (sym==comma); /*一条read语句可读多个变量 */

if(sym!=rparen) { } else { }

getsymdo; { }

getsymdo; error(33);

/* 格式错误,应是右括号*/

while(!inset(sym,fsys))/* 出错补救,直到收到上层函数的后跟符号*/

} ... }

六、 测试用例

6.1 测试不等号<>

测试代码 var b; begin b :=0; if b<> 1 then write(1); end. 运行结果

6.2 测试else语句

测试代码 var b; begin b :=2; if b<> 2 then write(1); else write(2);

write(3) end. 结果

6.3测试 *= /= 代码 var a,b; begin a:=2; b:=4; a*= 2; write(a); b /=2; write(b); end. 结果

6.4测试 FOR <变量>:=<表达式> TO <表达式> DO <语句>

代码 var a,b,c; begin

a:=2;


15广工编译原理课程设计及实验报告(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:自然地理学教案-伍光和版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: