ImageVerifierCode 换一换
你正在下载:

优先表.doc

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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

优先表.doc

1、本程序是使用C语言在TC2.0的环境下编写的编译原理中算符优先表的构造,供大家参考之用,切勿直接抄袭。程序正确无误,若环境不同,则有可能发生错误,请确保编译环境为TC2.0。要正确的运行本程序还需要将本文档最后的产生式存入chanshen.txt中。程序亦有很多可以改进的地方,若有更好的方法,可以发信息给我,交流之用。/*题目:构造优先表作者:Jolor(2008118228)创建时间:2011年4月19日*/#include #include #include #define MAX 20#define NULL 0#define TRUE 1#define FALSE 0/*程序中所用到的

2、结构体和变量*/struct no_sign /*非终结符的结构体*/char big_char; /*非终结符*/char firstvtMAX; /*非终结符的FIRSTVT集合*/char lastvtMAX; /*非终结符的LASTVT集合*/;struct sign /*终结符的结构体*/char small_char; /*终结符*/;typedef struct chanshengshi /*产生式的结构体*/char left; /*产生式的左部*/char rightMAX; /*产生式的右部*/chanshengshi;struct candidate /*候选式结构体*/

3、char candidateMAX; /*候选式串*/;/*程序中所用到的变量*/int no_sign_num=0; /*非终结符的数目*/int sign_num=0; /*终结符的数目*/int chanshengshi_num=0; /*产生式的数目*/int candidate_num=0; /*候选式的数目*/int FMAXMAX; /*布尔数组F,行列为终结符号的数目*/int LMAXMAX; /*布尔数组L,行列为终结符号的数目*/char start_sign; /*开始符号*/struct chanshengshi formularMAX; /*产生式的集合*/stru

4、ct no_sign no_terminalMAX; /*非终结符的集合*/struct sign terminalMAX; /*终结符的集合*/struct candidate candiMAX; /*候选式的结合*/*初始化函数*/void init()/*分析文件中的产生式函数*/void analysis(FILE *fp)int i,j; /*循环变量*/char sign; /*暂存一个字符*/char tempMAX; /*存放字符串的临时数组*/chanshengshi *p; /*产生式指针*/sign=fgetc(fp);start_sign=sign; /*读取的第一个字

5、符为开始符号*/rewind(fp); /*文件指针重新回到文件开始位置*/while(fscanf(fp,%s,temp)!=-1) /*扫描文件,为产生式集合赋值*/formularchanshengshi_num.left=temp0;strcpy(formularchanshengshi_num.right,temp+3);chanshengshi_num+;/*printf(The number of chanshengshi: %d.n,chanshengshi_num);*/formularchanshengshi_num.left=NULL; /*将产生式集合中的第一个空元素赋

6、值,作为扫描结束标志*/strcpy(formularchanshengshi_num.right,);for(p=formular;p-left!=NULL;p+)for(i=0;ileft=no_terminali.big_char)break;if(i=no_sign_num) /*将还没有在非终结符集合中非终结符加入集合*/no_terminalno_sign_num.big_char=p-left;strcpy(no_terminalno_sign_num.firstvt,);strcpy(no_terminalno_sign_num.lastvt,);no_sign_num+;fo

7、r(i=0;p-righti!=NULL;i+) /*扫描产生式的右部,将终结符加入终结符的集合*/if(!(p-rightirighti=A) /*去除非终结符号*/for(j=0;jrighti=terminalj.small_char)break;if(j=sign_num) /*将不在终结符集合中的终结符加入结合*/terminalsign_num.small_char=p-righti;sign_num+;for(i=0;iright,candii.candidate)=0)break;if(i=candidate_num) /*将不在候选式集合中的候选式加入候选式集合*/strcp

8、y(candicandidate_num.candidate,p-right);candidate_num+;no_terminalno_sign_num.big_char=NULL; /*为非终结符集合添加结束标志*/strcpy(no_terminalno_sign_num.firstvt,);strcpy(no_terminalno_sign_num.lastvt,);sign_num+;terminalsign_num.small_char=#; /*为终结符集合添加#标志*/sign_num+;terminalsign_num.small_char=NULL; /*为终结符集合添加结

9、束标志,最终的数目会为所有的终结符号数目+2*/formularchanshengshi_num.left=NULL; /*为产生式集合添加结束标志*/strcpy(formularchanshengshi_num.right,);strcpy(candicandidate_num.candidate,); /*为候选式集合添加结束标志*/fclose(fp); /*关闭文件*/*显示关于产生式、非终结符、终结符的详细信息*/void show_chanshengshi()int i,j;printf(The start_sign: %cn,start_sign);printf(The num

10、ber of no_terminal: %d.n,no_sign_num);printf(The number of terminal: %d.n,sign_num-2); printf(The number of chanshengshi: %d.n,chanshengshi_num);printf(The no_terminal are :n);for(i=0;ino_sign_num;i+)printf(%c ,no_terminali.big_char);printf(n);printf(The terminal are :n);for(i=0;isign_num-2;i+)printf(%c ,terminali.small_char);printf(n);printf(The chanshengshis right are:n);for(i=0;ichanshengshi_num;i+)printf(%sn,formulari.right);printf(The number o

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

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