ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:18.77KB ,
资源ID:16182895      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16182895.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IFELSE条件语句的翻译程序设计简单优先法输出四元式Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IFELSE条件语句的翻译程序设计简单优先法输出四元式Word文档格式.docx

1、(11)C-A/A(12)C-A*/int lineno = 1;char ch ; int anltable2222= /*S*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, /*if*/ 0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*E*/ 0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*then*/0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, /*B*/ 0,0,0,0,0,3,0,0,0,0,0,0,0,

2、0,0,0,0,0,0,0,0,2, /*else*/0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, /*(*/ 0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /*)*/ 0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*/ 0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /* /*=*/ 0,0,0,0,0,0,0,0,0,0,0,1,1,1,3,0,0,0,0,0,0,0, /*A*/ 0,0,0,0,0,0,0,3,3

3、,3,0,0,0,0,0,0,2,3,3,3,3,0, /*d*/ 0,0,0,0,0,0,0,2,2,2,3,0,0,0,0,0,2,2,2,2,2,0, /*num*/ 0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,2,2,2,2,2,0, /*C*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, /*/ 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0, /*/ 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, /*+*/ 0,0,0,0,0,0,0

4、,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /*_*/ 0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /*/ 0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /*/*/ 0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0, /*#*/ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,;/0-error ,1= ,3=char allname3030;/单词全名char out3030;/保存单词简称int leng

5、th;struct att/名字表类型 string sname; char select; char addre;att attname40;/名字表typedef struct SqStack char *base; char *top; int stacksize;SqStack;/栈定义void InitStack (SqStack &S) /栈初始化 S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char);/分配存储空间 if(!S.base) exit(OVERFLOW); /为栈S分配存储空间失败 S.top=S.base; S.sta

6、cksize=STACK_INIT_SIZE; int push(SqStack &S,char ch) / 将元素e插入到栈S中,成为新的栈顶元素 if(S.top-S.base S.stacksize) /判定栈是否满 S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT *sizeof(char); printf(分配存储单元失败.n); /存储单元分配失败 exit(OVERFLOW); S.top=S.base+S.stacksize; /指明栈顶指针的基址 S.stacksize+=STACKINCREMENT; /指明栈

7、的空间大小 / end of if *S.top+=ch; /先将e送入栈顶指针所指向的单元,再将栈顶指针加1 return(OK); /end of Push() subfunction int pop(SqStack &S,char &ch) /栈顶元素出栈 if(S.top=S.base) printf(溢出 return (ERROR); ch=*-S.top;char gettop(SqStack S) /返回栈顶元素 if(S.top=S.base) cout return 8; return 9;= return 10;A return 11;d return 12;n retu

8、rn 13;C return 14; return 15; return 16;+ return 17;- return 18;* return 19;/ return 20;# return 21; default: return 88; int judge(char *string) /判断是否是关键字 char *keywords1000=if,thenelse for(int i = 0;i = 2;i+) if (!strcmp(string,*(keywords+i) return 1; return 0;int analysis(ifstream &fin,ofstream &f

9、out) /词法分析程序,用引用传递参数 char temp10; / 临时存放已读入但无法判断类型的字符 int j=0; int ou=0; int na=0; while (fin.get(ch) if (ch = n) lineno += 1; else if (ch = t|ch = ) /排除制表、空格字符 else if (isalpha(ch) /当前输入符为字母 while (isalpha(ch)|isdigit(ch) tempj = ch; j+; fin.get(ch); tempj = 0; /标志字符串结束 j = 0; if(judge(temp) / 判断是否

10、为关键字 memcpy(allnamena,temp,10); attnamena.sname=allnamena; attnamena.select=allnamena0; memcpy(outou,temp,10);ou+; fout(attnamena.sname,关键字) na+; else attnamena.select=,变量) fin.seekg(-1,ios:cur); /回退1个字符 else if (isdigit(ch) while (isdigit(ch) memcpy(allnamena,temp,10); attnamena.sname=allnamena; at

11、tnamena.select= memcpy(outou,temp,10); fout,常量) na+; /回退一个字符) allnamena0=ch; attnamena.select=ch; memcpy(outou,=,10);,算符)+-*/ allnamena0=ch;attnamena.sname=allnamena;attnamena.select=ch;fout,界限符)na+; ,逻辑运算符) outou0= else无法识别字符 ch return 0; ch = attnamena.select= outou0= length=na; return 1;void prin

12、tstack(SqStack &S,int naa,int ty,ofstream &fout) char temp4020; for(int k=0;k40;k+) for(int t=0;t20;t+) tempkt=NULL; int te=0; int i=0,j=0; int nu=0; char *ku; ku=S.base; i=naa+1; char *contrl; contrl=S.base; while(contrl!=S.top) if(*contrl!1 if(*contrl= foutnu=nu+2; else if(*contrl=nu=nu+4;*contrl;

13、nu+; contrl+; foutttt for(i;i=length;i+) if(gettop(S)=#attnamei.select; if(gettop(S)= fout elsetempte; te+;int laynax(ofstream &f) SqStack S; InitStack(S); push(S, char cch,tempch; int naa=0,over=1,go; int front=0,last=0,choose=0; while(over) /getchar(); front=getnum(gettop(S); last=getnum(attnamena

14、a.select); go=naa; /coutfrontlast choose=anltablefrontlast; if(choose=1) push(S, push(S,attnamenaa.select); printstack(S,go,1,f); naa+; else if(choose=3) else if(choose=2) int a=0;l1: pop(S,cch); if(cch= if(tempch= push(S, printstack(S,go,3,f); over=0; else if(tempch= printstack(S,naa-1,3,f); front=getnum(gettop(S); last=getnum( choose=anltablefrontlast; if(choose=1)push(S, a=1; /cout归约了A printstack(S,go-1,3,f);归约了Bnaa+;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1