
实验二(递归下降分析).doc
2页实验二 递归下降语法分析一.实验目的1、 按照语言的语法要求编写文法的规则2、 转化文法的规则,使之具有 EBCF,消除左递归和左因子3、 掌握编程形式的语法分析器的实现二.实验内容在 TINY 计算机语言的编译程序的词法分析部分实现的基础上,采用递归下降的方法实现语法分析,形成语法树语法分析的输入是记号串,按照从左到右扫描,按照文法规则的要求,判断语句是否符合文法要求,如果符合要求则形成语法数,不符合则指出原因为了简化程序的编写,对语法有具体如下的要求:(1) 只有 5 中语句 if、repeat、read、write、assignment2) read 只作用一个变量,实现输入3) write 只作用一个表达式,实现输出4) 表达式只有两类:布尔表达式,只用于 if 和 repeat 语句的测试,算术表达式采用左结合和优先级的方式组成5) 没有变量的声明,仅仅在赋值时采用隐性的方式说明,只有整型变量;(6) 每个语句序列采用‘;’的形式分开,最后一个语句没有分号(7) 没有函数或过程三.实验要求要求实现语法分析程序的以下功能:(1) 在实现之前首先实现 EBNF,消除左递归和左因子,为递归下降程序做好准备(2) 对于语句和表达式采用枚举的形式定义,形成一个统一的树结点结构(3) 把正确源程序的首先经过词法分析形成二元式记号提供给语法分析程序(4) 如果出现错误,指出错误的位置和类型(5) 把语法树按照树的前序遍历的形式把所有的结点按照某种形式输出语法分析进行具体的要求:(1) 语法分析的具体功能实现是一个函数 TreeNode* parse(),分析记号串,形成一个语法数。
(2) 编写一个单独的函数 parseTree(TreeNode*)遍历整个语法树,把每个结点信息输出。
