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

2019-08-31 09:35

6.5.2 增加语句完成后的自增处理函数 //在statemtent之后调用 int backpath() {

int i = 0;

for(;i

selfopr(Info[i].lev,Info[i].addr,Info[i].o); }

infoindex = 0; return 0; }

6.5.3 修改statement函数

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

{

getsymdo;

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

nxtlev[endsym]=true;/*后跟符号为分号或end*/

/*循环调用语句处理函数,直到下一个符号不是语句开始符号或收到end*/ statementdo(nxtlev,ptx,lev);

backpath();

while(inset(sym,statbegsys)||sym==semicolon) { }

if(sym==semicolon) { } else { }

statementdo(nxtlev,ptx,lev); backpath();

error(10);/*缺少分号*/ getsymdo;

6.5.4 因子处理 修改factor函数 int factor() {

if(sym==ident) { ... getsymdo;

if (sym==mminus||sym==pplus)

{ Info[infoindex].o = sym;

Info[infoindex].lev = lev-table[i].level; Info[infoindex].addr =table[i].adr; infoindex++; getsymdo;

}

... }

增加因子前缀集 facbegsys[pplus]=true; facbegsys[mminus]=true;

(7) 增加字符类型

7.1 增加枚举变量

enum symbol{ ... charsym、charvalue enum object{ constant, variable, procedur, character };

7.2增加 关键字识别 strcpy(&(word[i++][0]),\wsym[i++]=charsym; 7.3增加到声明符集 declbegsys[charsym]=true;

...} 7.4增加字符识别 修改getsym() ...

else if (ch=='\\'')

{ }

getchdo; Tchar = ch; getchdo; if (ch!='\\'') { } else { }

sym = charvalue; getchdo; error(30);

7.5 增加字符声明函数

int chardeclaration(int * ptx,int lev,int * pdx) { if(sym==ident) { } else { error(4); enter(character,ptx,lev,pdx);//填写名字表 getsymdo; } return 0; } 7.6 修改block函数,增加关键代码 if(sym==charsym) { getsymdo; do{ chardeclaration(&tx,lev,&dx); while(sym==comma) { getsymdo;


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

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

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

马上注册会员

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