实验二 递归下降语法分析
一、实验目的
理解自顶向下语法分析的基本模式,熟悉递归下降分析程序的构造。
二、实验原理与要求
1、原理
每个非终结符抽象为一个函数,语法树的上下级关系对应于函数的递归调用。
2、要求
(1)针对一个具体语言子集,设计出相应的文法。
(2)递归过程按规定的模式。
(3)测试用例覆盖每个产生式候选。
三、实验设备
配置有 VC 开发环境的计算机设备。
四、实验内容
采用递归下降分析法对变量定义语句、赋值语句、while 语句、if 语句进行语法分析。
对每个非终结符设计递归子函数。
五、实验步骤
1、单词内码表
在实验一的基础上,要求考虑 while 语句、if 语句。以下为一参考实现:
2 、
定 义
语 言
文 法
( 1 )
定 义
所 需
的 非
终 结
符
选取高级语言的部分语句,先定义其中所涉及的非终结符:
非终结符 含义 非终结符 含义 非终结符 含义
<PR>
程序
<DSS>
变量定义语句集
<ESS>
可执行语句集
<DS>
变量定义语句
<IDS>
变量列表
<ROP>
关系运算符
<ES>
可执行语句
<WS>
while 语句
<IFS>
If 语句
<AS>
赋值语句
<SUB>
过程调用语句
<TYPE>
类型声明
<RE>
关系表达式
<OP1>
算术运算符 1
<OP2>
算术运算符 2
<E><E1><T><T1>
算术表达式文法(消除了左
单词
种别
编码
内码值 单词
种别
编码
内码值 单词
种别
编码
内码值
if 1 -1 >= 11 -1 - 21 -1
else 2 -1 >> 12 -1 / 22 -1
while 3 -1 = 13 -1 { 23 -1
int 4 -1 == 14 -1 } 24 -1
float 5 -1 * 15 -1 < 25 -1
char 6 -1 ** 16 -1 <= 26 -1
+ 7 -1 , 17 -1 << 27 -1
++ 8 -1 ; 18 -1 != 28 -1
+= 9 -1 ( 19 -1 标识符 100
自身值
> 10 -1 ) 20 -1 常数 110 自身值
1
评论0
最新资源