目录
一.语法分析方法 ......................................... 1
1.判断为算符优先文法: ................................ 1
2.求FirstVT集和LastVT集 ............................. 1
3.根据FirstVT和LastVT集构造算符优先表 ............... 1
二.程序设计 ............................................. 2
1.总体设计 ............................................ 2
2.子程序设计 .......................................... 2
三.程序中的结构说明 ..................................... 3
1.重要函数介绍 ........................................ 3
2.函数代码 ............................................ 3
四.程序测试 ............................................ 13
五、 实验总结 ........................................... 15
一.语法分析方法
有文法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集合表
S’ S V T FIRSTVT # i, +,),( i,+, ),( +, ) ,( LASTVT # i,+,*,( i,+,*,( +,(,* *,( F ),( 3.根据FirstVT和LastVT集构造算符优先表 表1-2 G[S]的算符优先关系矩阵表
# i +
# i + 1
* ( )
* ( ) 二.程序设计
1.总体设计
读入文法规则 创建文法关系表模块 求FIRSTVT模块 求LASTVT模块 识别终结符模块 求下标模块 读取语法分析串 输入串分析模块 图2-1 总体设计图
2.子程序设计
创建文法关系表模块
求FIRSTVT模块
T 求LASTVT模块 识别终结符模块 F 求下标模块 图2-2 子程序设计创建文法关系模块图
2