编译原理语法分析实验报告2.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 一.语法分析方法 1 1.判断为算符优先文法: 1 2.求FirstVT集和LastVT集 1 3.根据FirstVT和LastVT集构造算符优先表 1 二.程序设计 2 1.总体设计 2 2.子程序设计 2 三.程序中的结构说明 3 1.重要函数介绍 3 2.函数代码 3 四.程序测试 13 五、 实验总结 15 一.语法分析方法 有文法G[S]: (0)S’ →#S# (1)S→V (2)V→T|ViT (3)T→F|T+F (4)F→)V*|( 分析的句子为(+(i( 1.判断为算符优先文法: 文法没有A-…BC…且BC均为非终结符,因此它为OG文法 文法没有同时存在 ①A-…ab…或A-….aBb…. ②A-…aB…且B=b….或B=Cb…. ③A-…Bb….且B=…a或B=…aC 文法为算符优先文法 2.求FirstVT集和LastVT集 有产生式(0)S’ →#S# 可得’#’ ’#’ 表1-1 非终结符的FIRSTVT和LASTVT集合表 FIRSTVT LASTVT S’ # # S i, +,),( i,+,*,( V i,+, ),( i,+,*,( T +, ) ,( +,(,* F ),( *,( 3.根据FirstVT和LastVT集构造算符优先表 表1-2 G[S]的算符优先关系矩阵表 # i + * ( ) # i + * ( ) 二.程序设计 1.总体设计 图2-1 总体设计图 2.子程序设计 创建文法关系表模块 图2-2 子程序设计创建文法关系模块图 三.程序中的结构说明 1.重要函数介绍 int deal(); //对输入串的分析函数 int zhongjie(char c); //判断字符c是否是终结符函数 int xiabiao(char c); //求字符c在算符优先关系表中的下标 void out(int j,int k,char *s); //打印s栈 void firstvt(char c); //求非终结符c的FIRSTVT集 void lastvt(char c); //求非终结符c的LASTVT集 void table(); //创建文法优先关系表 void prtfun(char biao[10][10]); //打印firstvt或者lastvt集 2.函数代码 #include stdio.h #include stdlib.h char data[20][20]; //算符优先关系 char s[100]; //模拟符号栈s char lable[20]; //文法终结符集 char input[100]; //文法输入符号串 char string[20][10]; //用于输入串的分析 int k; char a; int j; char q; int r; //文法规则个数 int r1; //转化后文法规则个数 char st[10][30]; //用来存储文法规则 char first[10][10]; //文法非终结符FIRSTVT集 char last[10][10]; //文法非终结符LASTVT集 int fflag[10]={0}; //标志第i个非终结符的FIRSTVT集是否已求出 int lflag[10]={0}; //标志第i个非终结符的LASTVT集是否已求出 int deal(); //对输入串的分析 int zhongjie(char c); //判断字符c是否是终结符 int xiabiao(char c); //求字符c在算符优先关系表中的下标 vo

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档