- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理语法分析实验报告
班级:2013211307
学号:2013211353
姓名:陈剑南
目录
1.实验题目及要求
2.递归调用预测分析实现自顶向下分析
3.实验
实验题目及要求
题目:语法分析程序的设计与实现。?
实验内容:编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式由如下的文法产生。?
E-E+T | E-T | T
T-T*F | T/F | F
F-id | (E) | num
实验要求:在对输入表达式进行分析的过程中,输出所采用的产生式。?
方法1:编写递归调用程序实现自顶向下的分析。?
方法2:编写LL(1)语法分析程序,要求如下。?
?编程实现算法4.2,为给定文法自动构造预测分析表。?
编程实现算法4.1,构造LL(1)预测分析程序。?
方法3:编写语法分析程序实现自底向上的分析,要求如下。?
?构造识别所有活前缀的DFA。?
构造LR分析表。?
(3)?编程实现算法4.3,构造LR分析程序。?
方法4:利用YACC自动生成语法分析程序,调用LEX自动生成的词法分析程序。
递归调用预测分析实现自顶向下分析
消除文法左递归
文法改写为:
E-TE
E-EE|ε
E-+T|-T
T-FT
T-TT|ε
T-*F|/F
F-id|num|(E)
状态图:
(3)化简后得
3.实验结果
(1)1+3
A*3
(3)3+(出错)
实验心得
本次实验我是用的是递归下降分析方法,分析过程基本同书上的过程一样,消除左递归与状态转移图均是在纸上完成,只是用代码完成了递归分析过程。
总体来说该方法比较简单,分析过程也比较清楚。
遗憾在于:本想使用LR或是LL分析方法。
5.源程序
/*
*本题使用的是第一种方法
*通过递归调用程序实现自顶向下的分析
*1.首先消除左递归
*得到:
* E-TE
E-EE|ε
E-+T|-T
T-FT
T-TT|ε
T-*F|/F
F-id|num|(E)
*2.化简状态转换图
*3.实现预测分析
*/
#includeiostream
#includestring
#includestdlib.h
#includestdio.h
using namespace std;
int i;//全局变量,确定被判断的字符在字符串中的位置
int procE(string str, int i);
int procT(string str, int i);
int procF(string str, int i);
int procE(string str, int i)
{
int result;
cout \t\tE-TE\n;
if (str[i] != $)
{//递归T的过程
if (procT(str, i) == 1)
{
if (str[i] == + || str[i] == -)
{
cout \t\tE-EE\n;
cout str[i] \t\t;
if (str[i] == +)
cout E-+T\n;
else
cout E--T\n;
i++;
result = procT(str, i);//调用T的过程
if (str[i] == $ || str[i] == ))
{
cout \t\tE-ε\n;
}
}
else if (str[i] == $ || str[i] == ))
{
cout \t\tE-ε\n;
result = 1;
}
else{
result = -1;
}
}
else
result = -1;
}
else
result = 1;
return result;
}
int procT(string str, int i)
{
int result;
cout \t\tT-FT\n;
if (procF(str, i) == 1)
{
if (str[i] == * || str[i] == /)
{
cout \t\tT-TT\n;
cout str[i] \t\t
文档评论(0)