目录 一.语法分析方法 ......................................... 1 1.判断为算符优先文法: ................................ 1 2.求FirstVT 集和LastVT 集 ............................. 1 3.根据FirstVT 和LastVT 集构造算符优先表 ............... 1 二.程序设计 ............................................. 2 1.总体设计 ............................................ 2 2.子程序设计 .......................................... 2 三.程序中的结构说明 ..................................... 3 1.重要函数介绍 ........................................ 3 2.函数代码 ............................................ 3 四.程序测试 ............................................ 13 五、 实验总结 ........................................... 15 1 一.语法分析方法 有文法G[S]: (0)S’ →#S# (1)S→V (2)V→T|ViT (3)T→F|T+F (4)F→)V*|( 分析的句子为(+(i( 1.判断为算符优先文法: 文法没有A->…BC…且 BC 均为非终结符,因此它为 OG 文法 文法没有同时存在 ①A->…ab…或 A->….aBb…. ②A->…aB…且 B=>b….或 B=>Cb…. ③A->…Bb….且 B=>…a 或 B=>…aC 文法为算符优先文法 2.求 FirstVT 集和 LastVT 集 有产生式(0)S’ →#S# 可得’#’ ’#’ 表 1-1 非终结符的 FIRSTVT 和 LASTVT 集合表 FIRSTVT LASTVT S’ # # S i, +,),( i,+,*,( V i,+, ),( i,+,*,( T +, ) ,( +,(,* F ),( *,( 3.根据 FirstVT 和 LastVT 集构造算符优先表 表 1-2 G[S]的算符优先关系矩阵表 # i + * ( ) # i + 2 * ( ) 二.程序设计 1.总体设计 图2-1 总体设计图 2.子程序设计 创建文法关系表模块 图2-2 子程序设计创建文法关系模块图 读入文法规则 创建文法关系表模块 求FIRSTVT 模块 求LASTVT 模块 识别终结符模块 求下标模块 读取语法分析串 输入串分析模块 求FIRSTVT 模块 求LASTVT 模块 识别终结符模块 求下标模块 F T 3 三.程序中的结构说明 1.重要函数介绍 int deal(); //对输入串的分析函数 int zhongjie(char c); //判断字符 c 是否是终结符函数 int xiabiao(char c); //求字符 c 在算符优先关系表中的下标 void out(int j,int ...