编译原理预测分析法实验报告.pdfVIP

  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文档。上传文档
查看更多
编译原理实验预测分析法 姓名 ** 学号 ** 班级 ** 完成日期 ** 1. 实验目的 加深对语法分析器工作过程的理解;加强对预测分析法实现语法分析程序的掌握;能够采用一种编程语 言实现简单的语法分析程序;能够使用自己编写的分析程序对简单的程序段进行语法翻译。 2 . 实验要求 1.对语法规则有明确的定义; 2.编写的分析程序能够对实验一的结果进行正确的语法分析; 3.对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过 程; 4.实验报告要求用文法的形式对语法定义做出详细说明,说明语法分析程序的工作过程,说明错误处理 的实现。 3 . 实验原理 对文法G进行语法分析,文法G如下所示: *0. S→a */ *1. S→^ *2. S→(T) *3. T→SW * *4. W→,SW *5. W→ε; 4 . 软件设计与编程 #include stdio.h #include stdlib.h #include string.h char str[100]; //存储待分析的句子 const char T[ ] = a^(),#; //终结符,分析表的列符 const char NT[ ] = STW; //非终结符,分析表的行符 /*指向产生式右部符号串*/ const char *p[] = { /*0. S→a */ a, /*1. S→^ */ ^, /*2. S→(T) */ (T), /*3. T→SW */ SW, /*4. W→,SW */ ,SW, /*5. W→ε; */ }; //设M[i][j]=x ,通过p[M[i][j]]=p[x]获取右部符号串。 const int M[][6] = { /* a ^ ( ) , # */ /*S*/ { 0, 1, 2, -1, -1, -1 }, /*T*/ { 3, 3, 3, -1, -1, -1 }, /*W*/ { -1, -1,-1, 5, 4, -1 } }; void init()//输入待分析的句子 { printf(请输入待分析的句子(以$结束) :\n); scanf(%s,str); } int lin(char c);//非终结符转换为行号 int col(char c);//终结转换为列号 bool isNT(char c);//isNT判断是否是非终结符 bool isT(char c);//isT判断是否是终结符。 void main(void) { int i,j=0; int flag=1,flag2=0; char A; //设置指示句子的当前字符 char stack[20] {#,S}; //栈赋初值 int top = 1 ; //设置栈顶指针 char X = ; //存储栈顶字符 init(); A=str[0]; printf(\t步数\t分析栈\t输入串\t所用规则\n); //在屏幕上输出列表标题 while ( 1 ) { printf(\n\t(%d)\t,++j); //输出当前执行步数 for ( i = 0 ; i = top ; i++ ) //输出当前栈的内容(出栈前) { printf(%c,stack[i]); } printf(\t); for ( i = flag-1 ; str[i]!=$ ; i++ ) { printf(

文档评论(0)

166****9181 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档