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

2019-08-31 09:35

else if (ch=='-') { } getchdo; if (ch=='-') // 自减检测 { } else { } sym = minus; sym=mminus; getchdo; 1.3 修改init(),增加以下语句 void init() { ... ssym['&']=andsym; ... } ssym['!']=neq; 1.4 修改init()增加保留字识别 strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\strcpy(&(word[i++][0]),\ i = 0; /*设置保留字符号*/ wsym[i++]=dosym; wsym[i++]=downtosym; wsym[i++] =elsesym; wsym[i++]=forsym; wsym[i++]=returnsym; wsym[i++]=thensym; wsym[i++]=tosym; 1.5 修改单词总数symnum,加2 #define NumOfKeywork 21 //21是完成时的状态 (2)修改单词:不等号# 改为 <>

2.1 修改getsym(),识别<> getsym() { ...

else if(ch=='<')

{ }

getchdo;

if(ch=='=') //小于等于 { }

else if(ch=='>') //不等于 { } else { }

sym = lss; sym=neq; getchdo; sym=leq; getchdo;

... }

(3)增加条件语句的ELSE子句,要求:写出相关文法,语法图,语义规则。

3.1 文法 将原本 条件语句 -> if条件 then 语句

改为 条件语句 -> if条件 then 语句 [else 语句]

<条件语句> ::== if <条件> then <语句> [else <语句>]

3.2修改statement

else if(sym==ifsym) /*准备按照if语句处理*/

/*经statement处理后,cx为then后语句执行 {

getsymdo;

memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlev[thensym]=true;

nxtlev[dosym]=true; /*后跟符号为then或do*/

conditiondo(nxtlev,ptx,lev); /*调用条件处理(逻辑运算)函数*/ if(sym==thensym) { } else { }

cx1=codePointer; /*保存当前指令地址*/ gendo(jpc,0,0); /*生成条件跳转指令,暂写0*/ statementdo(fsys,ptx,lev); /*处理then后的语句*/

error(16); /*缺少then*/ getsymdo;


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

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

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

马上注册会员

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