- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理试验题目
实验一
题目:词法分析
目的:通过该实验使学生掌握描述词法的文法,同时能够进行词法分析。
要求:对输入的字符串进行词法分析,形成词法分析产生的符号表。
内容:给定描述词法的文法为:
文法一:〈整型数值型数据〉→[+|-]〈数字〉〈数字〉*
〈数字〉→0|1|2|3|4|5|6|7|8|9
文法二:〈算符〉→+|-|*|/
利用以上二个文法对从键盘输入的字符串进行词法分析,对符合这两个文法的字符串建立单词符号表;对不符合这两个文法的字符串给出错误信息。编程序实现该功能,并上机调试。
使用的数据结构:1.一个字符数组s,用来接受从键盘输入的字符串。
2.定义一个结构体,利用该结构体定义一个数组stable,用来存放字符串中字符的属性(类型class和值value)。
3.定义一个整型数组ei,大小与字符数组相同,记录对应字符是否是错误字符。
算法描述:
实验二
题目;语法分析(一)
目的:通过该实验使学生掌握描述语法的文法和并能利用自顶向下的分析方法对表达式进行语法分析
要求:在实验一的基础上,对符号表中的单词采用自顶向下的分析方法进行语法分析,对不符合给定的文法的字符串,给出错误信息。
内容:给定描述语法的文法为:
E→E+T|E-T|T
T→T*F|T/F|F
F→F^P|P
P→i
注:i为实验一中分析得到的整型数值型数据,+、-、*和/为实验一文法二所描述的算符。
使用的数据结构:
1.定义一个结构体,利用该结构体定义一个数组stable,用来存放字符串中字符的属性(类型class和值value)。(与实验一同用)
2.定义一个整型数组eft,大小与stable数组相同,记录对应单词是否是错误。
3.定义一个三维字符数组:用来存放分析表。
a1
ai #
x … #
构造LL(1)驱动程序的算法:
1)分析开始时
标志符号#和文法开始符号S压人符号栈;
输入流指针指向第一个输入符号,初始格局为
(#S,ala2…an#)
2)设在分析的某一步,符号栈及剩余的输入流处于如下的格局
(#XlX2…Xm-1Xm,aiai+1…an#)
可视栈顶符号Xm的不同情况,分别作如下动作:
(1)若Xm (VN,则以Xm 及ai组成的符号对(Xm ,ai )查分析表T。
设T( Xm ,ai )为一产生式,假设是Xm -UVW,将Xm 从分析栈中退出,将UVW压人栈中, 得到新的格局:
(#XlX2…Xm-1 WVU ,aiai+1…an# )
若T(Xm ,ai ) =Error,则调用出错处理程序进行处理。
(2)若Xm = ai (#,则表明栈顶符号已经与当前扫描的输入符号得到匹配,此时应将Xm (即ai )从栈中退出,并将输入流指针向前移动一个位置。
(3)若Xm = ai =# ,则表明输入串已经完全得到匹配,此时即可宣告分析成功而结束分析。
(4)其它情形,转错误处理程序。
实验三
题目;语法分析(二)
目的:通过该实验使学生掌握描述语法的文法和并能利用自底向上的分析方法对表达式进行语法分析
要求:在实验一的基础上,对符号表中的单词采用自底向上的分析方法进行语法分析,对不符合给定的文法的字符串,给出错误信息。
内容:给定描述语法的文法为:
E→E+T|E-T|T
T→T*F|T/F|F
F→F^P|P
P→i
注:i为实验一中分析得到的整型数值型数据,+、-、*和/为实验一文法二所描述的算符。
使用的数据结构:
1.定义一个结构体,利用该结构体定义一个数组stable,用来存放字符串中字符的属性(类型class和值value)。(与实验一同用)
2.定义一个整型数组eft,大小与stable数组相同,记录对应单词是否是错误。
3.定义一个二维字符数组:用来存算符优先关系表。
4.定义一个字符数组:作为符号栈。
算法描述:
(1)首先根据已知文法构造相应的优先关系矩阵。
(2)设立符号栈S,将输入符号串“X1… Xi Xi+1 … Xj … Xn”从左向右依次压入符号栈S中,同时检查相邻符号Xj与Xj+1的优先关系,一旦发现Xj ? Xj+1时停止压栈,进入下一步。
(3)栈顶当前符号Xj ,从Xj 开始往前(左)找第一个使Xi-1? Xi的 Xi
用Xi Xi+1 … Xj去查产生式的右部,并用相应的左部符号代替句柄Xi Xi+1 … Xj (归约) 。
(4)重复上述过程,直至输入符结束。如果归约出文法的开始符号则成功。否则失败。
实
文档评论(0)