实验二:算术表达式递归下降分析程序设计 LD 1、实验目的: (1)掌握自上而下语法分析的要求与特点。 (2)掌握递归下降语法分析的基本原理和方法。 (3)掌握相应数据结构的设计方法。 2、实验内容: 编程实现给定算术表达式的递归下降分析器。 算术表达式文法如下: EE+T | T TT*F | F F(E) | i 3、设计分析 题目所给的文法不为LL(1)文法,应改写成如下文法: E TE2 E2+TE2 | ∑ T FT2 T2*FT2 | ∑ F (E) | i 采用递归下降分析法时,需要求出 E2 和T2 的FOLLOW 集: FOLLOW(E2)={),#} FOLLOW(T2)={+,),#} 递归下降分析法是确定的自上而下分析法,基本思想是,对文法中的每个非终结符编写一个函数,每个函数的功能是识别由该非终结符所表示的语法成分。因此需要分别构造E,E2,T,T2,F 函数来执行自己的识别功能,根据文法的内容顺序决定函数的识别功能。advance 函数用于字符串的推进,input 函数用于字符串的输入。 4、程序代码 #include using namespace std; char a[80]; // 字符串的存入 char sym; // 单个的判断字符 int i=0; // 字符串下标 void E(); // 功能识别函数 void E2(); // 功能识别函数 void T(); // 功能识别函数 void T2(); // 功能识别函数 void F(); // 功能识别函数 void input(); // 输入函数 void advance(); // 字符串小标进一函数 void main() { while(1) { input(); advance(); E(); // 从首个推导式 E 开始 if (sym=='#') cout<<"success"<>...