实验二递归下降语法分析

实验二递归下降语法分析

ID:8917792

大小:54.00 KB

页数:4页

时间:2018-04-12

实验二递归下降语法分析_第1页
实验二递归下降语法分析_第2页
实验二递归下降语法分析_第3页
实验二递归下降语法分析_第4页
资源描述:

《实验二递归下降语法分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二递归下降语法分析一.实验目的1、按照语言的语法要求编写文法的规则2、转化文法的规则,使之具有EBCF,消除左递归和左因子3、掌握编程形式的语法分析器的实现二.实验内容在TINY计算机语言的编译程序的词法分析部分实现的基础上,采用递归下降的方法实现语法分析,形成语法树。语法分析的输入是记号串,按照从左到右扫描,按照文法规则的要求,判断语句是否符合文法要求,如果符合要求则形成语法数,不符合则指出原因。为了简化程序的编写,对语法有具体如下的要求:(1)只有5中语句if、repeat、read、write、assignment。(2)

2、read只作用一个变量,实现输入。(3)write只作用一个表达式,实现输出。(4)表达式只有两类:布尔表达式,只用于if和repeat语句的测试,算术表达式采用左结合和优先级的方式组成。(5)没有变量的声明,仅仅在赋值时采用隐性的方式说明,只有整型变量;(6)每个语句序列采用‘;’的形式分开,最后一个语句没有分号(7)没有函数或过程三.实验要求要求实现语法分析程序的以下功能:(1)在实现之前首先实现EBNF,消除左递归和左因子,为递归下降程序做好准备(2)对于语句和表达式采用枚举的形式定义,形成一个统一的树结点结构(3)把正确源程

3、序的首先经过词法分析形成二元式记号提供给语法分析程序(4)如果出现错误,指出错误的位置和类型(5)把语法树按照树的前序遍历的形式把所有的结点按照某种形式输出语法分析进行具体的要求:(1)语法分析的具体功能实现是一个函数TreeNode*parse(),分析记号串,形成一个语法数。(2)编写一个单独的函数parseTree(TreeNode*)遍历整个语法树,把每个结点信息输出四.源代码#includeusingnamespacestd;chara[80];//字符串的存入charsym;//单个的判断字符inti

4、=0;//字符串下标voidE();//功能识别函数voidE2();//功能识别函数voidT();//功能识别函数voidT2();//功能识别函数voidF();//功能识别函数voidinput();//输入函数voidadvance();//字符串小标进一函数voidmain(){while(1){input();advance();E();//从首个推导式E开始if(sym=='#')cout<<"success"<

5、)T();E2();}voidE2(){if(sym=='+'){adance();T();E2()}elseif(sym!=')'&&sym!='#'){cout<<"error!"<

6、();if(sym==')')advance();else{cout<<"error!"<>a;}voidadvance(){sym=a[i];i++;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。