编译原理程序设计实验报告——实验题目班级:计算机 1306姓名:学号:实验目标:表达式语法分析器的设计实现1) 递归下降子程序2) LL(1)分析法 实验内容:1
概要设计1) 根据流程图,调用子程序实现;2) 通过 ll(1)分析表和对应压栈、弹栈操作实现
流程图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[3