1 / 9
文档名称:

语法分析实验报告.doc

格式:doc   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

语法分析实验报告.doc

上传人:2890135236 2015/3/31 文件大小:0 KB

下载得到文件列表

语法分析实验报告.doc

文档介绍

文档介绍:《编译原理》实验报告
2008年11月20日
姓名
孙丽君
班级
06行知计算机网络技术
学号
06202135
课程
名称
编译原理
实验项目名称
语法分析
指导教师
郑豪
一、实验目的:
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
二、实验原理(可以流程图的形式出现,加以文字说明)

:
(1)<程序>::=begin<语句串>end
(2)<语句串>::=<语句>{;<语句>}
(3)<语句>::=<赋值语句>
(4)<赋值语句>::=ID:=<表达式>
(5)<表达式>::=<项>{+<项> | —项>}
(6)<项>::=<因子>{*<因子> | /<因子>}
(7)<因子>::=ID | NUM | (<表达式>)

输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“ess”,否则输出“error”。
例如:

输入begin a:=9;x:=2*3;b:=a+x end #
ess
输入x:=a+b*c end #
输出 error




. . 。





调用scaner
是否:=?
调用scaner
是否标识?
出错处理
调用expression函数



出错处理
调用term函数
调用scaner
是否+,-?
调用term函数

expression表达式分析函数示意图


调用factor函数
调用scaner
是否*,/?
调用factor函数
出错处理


三、实验步骤
(介绍关键的步骤,至少10步,并简要说明其工作原理)
语法分析的主程序
void main()
{p=0;
printf("********************语法分析程序***************\n");
printf("请输入源程序:\n");
do
{ scanf("%c",&ch);
prog[p++]=ch;
}while(ch!='#');
p=0;
scaner();
lrparser();
printf("语法分析结束!\n");
}
编写扫描子程序
void lrparser()
{
if (syn==1) //begin
{
scaner();
yucu();
if (syn==6) //end
{
scaner();
if (syn==0 && kk==0) printf("ess \n");
}
else