- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单优先文法关系矩阵构造
通达学院
专业课程设计II
题 目: 简单优先文法关系矩阵构造
专 业 计算机通信 学 生 姓 名 班 级 学 号 28班 0座机电话号码 指 导 教 师 徐佳 指 导 单 位 计算机学院计算机科学与技术系
日 期 2012.11.12-2012.11.23 教师评语
同学出勤率 满勤、较高、一般,较低 ,学习态度 端正、较端正、一般、较差 ,程序设计基础(好、较好、一般、较差),演示程序 已经、没有 达到了基本要求,算法设计(好、较好、一般),界面友好程度(好、较好、一般),答辩过程中回答问题(准确、较准确、错误率较高),撰写报告格式 规范、一般 、内容(丰满、简单)、表述 清晰、一般、不清楚 ,(圆满、较好、基本 完成了课题任务。 教师签名: 年 月 日 成绩评定 备 注 简单优先文法关系矩阵构造
课题内容和要求
基本功能:对任意输入的文法均可计算其文法符号的优先关系。例如文法G[Z],一共有7个符号:Z、M、L、a、b、 、 ,文法之间的关系(规则)如下: Z ∷=bMb M ∷= L|a L∷=Ma 二、概要设计
字符串处理:此模块要求能够从输入的字符串中提取出字符集,包括终结符和非终结符,建立对应的字符表。
矩阵的乘方:此模块要求能够计算矩阵的乘方,细化后应包括有局真的乘法的子模块。
求解R,L, 关系模块。 1 R关系:由语法语句定义可知”A:: …|..”形式可知扫描每一句语句找出第四个字符,和“|”字符的下一个字符,同定义符构成R关系。 2 L关系:由语法语句定义可知”A:: …|..”形式可知扫描每一句语句找出最后一个字符,和“|”字符的前一个字符,同定义符构成L关系。 3 关系:例如”A:: AS|Aa|b”可知只需从第四个字符开始依次查找,A S,遇到“|”符号时扫描指针i向后移动两位。
矩阵的并(和)运算:根据编译原理中简单文法的规则,需要求出L+关系,R+关系,L*关系,而此求解根据warshll算法的需要进行大量的乘方运算。 L+ L U L^2 U L^3 ……U L^n L* L^0 U L^1 U L^2 U L^3 ……U L^n R+ R U R^2 U R^3 ……U R^n
矩阵显示输出模块
流程图
三、详细设计
#include
#include
#include
int hasletter char *v,char c //判断字符表中是否含有某一字符 int mark 0;
int length strlen v ;
for int i 0;i length;i++ if c v[i] mark 1; //mark 1 字符表v中含有c break; return mark; void searchstring char *v,char **pMatrix,int n //建立字符表 int i,k,p;
char *Vletter new char[257];
Vletter[256] \0;;
for i 0;i 256;i++ Vletter[i] \0; for i 0,k 0,p 0;i n;i++ for int j 0;j strlen pMatrix[i] ;j++ if !hasletter v,pMatrix[i][j] if pMatrix[i][j] Z pMatrix[i][j] A v[k++] pMatrix[i][j]; else if !hasletter Vletter,pMatrix[i][j] if pMatrix[i][j] A || pMatrix[i][j] Z pMatrix[i][j]! :pMatrix[i][j]! pMatrix[i][j]! | Vletter[p++] pMatrix[i][j]; int vl strlen v ;
int Vletterl strlen Vletter ;
for i vl,k 0;k Vletterl;i++,k++ v[i] Vletter[k]; /*******矩阵乘法******/
void Matrix_mutiply int **Matrix_1, int **Matrix_2,int **Matrix_Resutl, int n int length n;
int temp 0;
for int row 0;row length;row++ for int column 0;column length;column++ for int m 0;m length;m++ Matrix_Resutl
原创力文档


文档评论(0)