[计算机]LL1语法分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]LL1语法分析

北华航天工业学院 《编译原理》课程实验报告 课程实验题目: LL(1)语法分析实验 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: xxx 作 者 学 号: xxxxx _ 作 者 姓 名 : xxxx 指导教师姓名: xxxx 完 成 时 间 : 2011年4月28日 一、实验目的 理解预测分析表方法的实现原理。 二、实验内容及要求 编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。 给定算术表达式文法,编写程序。 测试数据: 1.算术表达式文法 E→TE’ E’ → +TE’|- TE’|ε T→FT’ T’ →*FT’ |/ FT’ |%FT’|ε F→(E) |id|num 2. 作业3.10 文法 三、实验程序设计说明 1.实验方案设计 主要函数之间的调用关系如下图所示: 程序源代码 源代码如下: #include iostream #include cstdio #include stack using namespace std; struct Node1 { char vn; char vt; char s[10]; }MAP[20];//存储分析预测表每个位置对应的终结符,非终结符,产生式 int k; //用R代表E,W代表T,e代表空 char start=E; int len=8; char G[10][10]={E-TR,R-+TR,R-e,T-FW,W-*FW,W-e,F-(E),F-i};//存储文法中的产生式 char VN[6]={E,R,T,W,F};//存储非终结符 char VT[6]={i,+,*,(,),#};//存储终结符 char SELECT[10][10]={(,i,+,),#,(,i,*,+,),#,(,i};//存储文法中每个产生式对应的SELECT集 char Right[10][8]={-TR,-+TR,-e,-FW,-*FW,-e,-(E),-i}; //用R代表A,W代表B,e代表空 /*char start=A; int len=6; char G[10][10]={A-aR,R-ABl,R-e,B-dW,W-bW,W-e}; char VN[6]={A,R,B,W}; char VT[6]={a,d,b,#,l}; char SELECT[10][10]={a,a,d,#,d,b,l}; char Right[10][6]={-aR,-ABl,-e,-dW,-bW,-e};*/ stack char stak; bool compare(char *a,char *b) { int i,la=strlen(a),j,lb=strlen(b); for(i=0;ila;i++) for(j=0;jlb;j++) { if(a[i]==b[j]) return 1; } return 0;} char *Find(char vn,char vt) { int i; for(i=0;ik;i++) { if(MAP[i].vn==vn MAP[i].vt==vt) return MAP[i].s;} return error;} char * Analyse(char * word) { char p,action[10],output[10]; int i=1,j,l=strlen(word),k=0,l_act,m; while(!stak.empty()) stak.pop(); stak.push(#); stak.push(start); printf(___________________________________________________________\n); pr

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档