1 / 13
文档名称:

语法分析实验报告.docx

格式:docx   大小:173KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语法分析实验报告.docx

上传人:jiyudian11 2022/7/23 文件大小:173 KB

下载得到文件列表

语法分析实验报告.docx

文档介绍

文档介绍:编译原理实验报告
头验名称: 编写语法分析程序
实验类型: 上机实验
指导教师: 蒋勇
专业班级: 软件1002班
姓 名:
学 号: 20101
实验地点: 东6A319
实验成绩:
日期: 2012 年 05 月 2ive_expr >)) = (、ID、NUM
< additive_expr>::=vterm>{(+l-)v term >}
产生式:< additive_expr>:: =< additive_expr>(+l-)v term >l<term>
additive_expr>:: =<term>< additive_expr1>
additive_expr1>:: =(+l-)< term >< additive_expr1>l£
FIRST (<term>< additive_expr1>) = (、ID、NUM
FIRST ((+l-)< term >< additive_expr1>l£ ) =+、-、£
FOLLOWv additive_expr1>)=>、V、>=、v=、==、!=、;
< term >::=<factor>{(*l /)< factor >}
V term >::=< term >(*l /)< factor >l<factor>
term >::=<factor> < term1 >
term1 >:: =(*l /)< factor >< term1 >l£
FIRST (<factor> < term1 >) = (、ID、NUM
FIRST ((*l /)< factor >< term1 >l£ ) =*、/、£
FOLLOW (< term1 >) =>l<l>=l<=l==l!=
< factor >::=(< expression >)lIDlNUM
FIRST ((< expression >)lIDlNUM) = (、ID、NUM
结束
N
Y
Y
*
N
N
Y
Y
N
N
N
*
+-
*(){}[]
字母
空格,扌
T
/
字母或者数字 Y
数字
语法分析:
开始
输出单(双) 分界符
输出保留字
保留字
读下一个字 符
输岀标识符
组合标识符
关闭文件
输出整数
打开文件
读下一个字 符
继续读字符
错误
组合整数
*读取字符*
注释不配对
读入字符
读入字符
Statement_list()
开始
\ /
es=0
读入一个
符号es=0
token
es=1
-Y
•媒T0ofen==iff. —Y
Token二while
declaration」
st()
es=0
Statement_list()
es=0
es=2
If_s tat()
while_stat()
返回
三、实验过程
1、编写代码
Token=for Y
for_s tat()
read_s tat()
Token二write
write_stat()
<Token=]二;-YV 5吨典同_
stat e()
Token=ID|NUM|( y
N
expressio
n_s tat()
t oken
Return(es)
1) 改写文法,消除二义性;
2) 消除左递归、提取左因子;
3) 求 FIRST 集、FOLLOW 集;
4) 检查是不是LL(1)文法,若不是LL(1),说明文法的复杂性超过自顶向下方
法的分析能力
5) 直接根据产生式设计相应的程序
2、实验结果
测试序号
测试代码
测试结果
int int ID a
int int ID b
====^法分析结果丁
错误r
Press any kmy to cont inue
int a; int b; a=30; if(a>10) {
b=a+10;
测试通过
{
int a;
int b,n umber;
a=30;
if(a>10)
{
b=a+10;
}
n umber=b+a;
}
未能通过原因:TEST语言无法通过形如“int a, b; ”的语句;将这
条语句改为:“int a; int b; ”则能通过; {
int a;
int b;
a=30;
if(a>10
{
b=a+1