编译原理程序设计实验报告——实验题目班级:计算机 1306姓名:学号:实验目标:表达式语法分析器的设计实现1) 递归下降子程序2) LL(1)分析法 实验内容:1. 概要设计1) 根据流程图,调用子程序实现;2) 通过 ll(1)分析表和对应压栈、弹栈操作实现。2. 流程图1) 递归:Z’(main): N Err开始Read ( w)E#?结束E: E1: Y N Y NT: T1: Y N Y NF: N N err Y Y Y N err入口TE1入口+?- ?出口Read(w)T出口入口FT1出口入口* ?/ ?出口Read ( w)T入口I ?(?Read ( w)E)?Read ( w)出口2) LL(1):开始构建 LL(1)分析表调用函数token ( ) 切 分 单词调用*Analyse(char *token)进行分析结束BeginPUSH(#),PUSH(E)POP(x)x∈VTx∈VNx=wendW=#nyNEXT(w)ynerr查LL(1)分析表空?nPUSH(i)errny逆序压栈3. 关键函数1) 递归下降子程序void E();//E->TX;int E1();//X->+TX | evoid T();//T->FYint T1();//Y->*FY | eint F();//F->(E) | i2) LL(1)分析法 char *Find(char vn,char vt)//是否查到表char *Analyse(char *token)//分析过程int Token()//将 token 中数字表示成 i,标识符表示成 n源程序代码:(加入注释)1) 递归下降子程序:#include#include#include #include using namespace std;/********全局变量**********/char str[30];int index=0;void E();//E->TX;int E1();//X->+TX | evoid T();//T->FYint T1();//Y->*FY | eint F();//F->(E) | iFILE *fp;char cur;/*************主函数************/int main(){int len;int m;if((fp=fopen("source.txt","r"))==NULL){ cout<<"can not open the source file!"<