编译原理语法分析实验报告
编译原理语法分析的实验报告
南华大学
计算机科学与技术学院
实 验 报 告
( 2007 ~2008 学年度 第二学期 )
课程名称
实验名称
姓名 专业 地点
寻友旭 软件工程 6—413
学号
20054350227
编译原理 语法分析
班级 软件工程052班
教师
陈星
编译原理语法分析的实验报告
1.实验目的及要求
编制一个递归下降分析程序,实现对词法分析程序所提供得单词序列得语法检查和结构分析。
软件、硬件环境
VC6.0
要求:
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
待分析的简单语言得语法:
E E+T | E-T | T T T*F | T/F |F
F (E) | i
输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“Accept! Right Expression!”,否则输出“Error!!!”。
语法分析:
a) ∵E=>E+T=>E+T*F=>E+T*(E)即有E=>E+T*(E)存在左递归。用直接改写法消除左递归,得到如下: E TE’
E’ +TE’ | TE’|ε T FT’
T’ *FT’ | /FT’|ε F (E) | i
b) 对于以上改进的方法。可得: 对于E’: FIRST( E’ )=FIRST(+TE’)∪FIRST(-TE’)∪{ε}={+, ,ε} 对于T’: FIRST( T’ )=FIRST(*FT’)∪FIRST(/FT’)∪{ε}={*,∕,ε} 而且: FIRST( E ) = FIRST( T ) = FIRST( F )=FIRST((E))∪FIRST(i)={(,i } 由此我们容易得出各非终结符的FOLLOW集合如下: FOLLOW( E )= { ),#}
FOLLOW(E’)= FOLLOW(E)={ ),#}
FOLLOW( T )= FIRST(E’)\ε∪FOLLOW(E’)={+, ,),#} FOLLOW( T’ ) = FOLLOW( T ) ={+, ,),#}
FOLLOW( F )=FIRST(T’)\ε∪FOLLOW(T’)={*,∕,+, ,),#} 由以上FOLLOW集可以我们可以得出SELECT集如下: 对E SELECT(E TE’)=FIRST(TE’)=FIRST(T)={ (,i } 对E’ SELECT(E’ +TE’)={ + } SELECT(E’ TE’)={ } SELECT(E’ ε)={ε,),#} 对T SELECT(T FT’)={(,i}
对T’ SELECT(T’ *FT’)={ * } SELECT(T’ ∕FT’)={ ∕ } SELECT(T’ ε)={ε,+, ,),#} 对F SELECT(F (E) )={ ( } SELECT(F i)={ i }
∴ SELECT(E’ +TE’)∩SELECT(E’ TE’)∩SELECT(E’ ε)= SELECT(T’ *FT’)∩SELECT(T’ ∕FT’)∩SELECT(T’ ε)= SELECT(F (E) )∩SELECT(F i)=
由上可知,有相同左部产生式的SELECT集合的交集为空,所以文法是LL(1)文法。因此,转化后的文法可以用递归下降分析法作语法分析。
编译原理语法分析的实验报告
2.实验步骤
1、 分析试验资料,结合书本得出实验大体思路; 2、 根据资料画出语法分析程序的流程图; 3、 根据流程图与程序大体框架完善程序; 4、 将代码输入电脑中,调试;
5、 根据资料中数据测试程序得基本功能; 6、 根据测试结果,设计测试数据完善程序; 7、 根据实验结果分析总结。
3. 实验内容
词法分析程序的主要子函数模块流程图
\
编译原理语法分析的实验报告
程序:
#include <stdio.h> #include<dos.h> #include<stdlib.h> #include<string.h>
char a[50] ,b[50],d[200],e[10]; char ch;
int n1,i1=0,flag=1,n=5; int total=0;
int E(); int E1(); int T(); int G(); int S(); int F();
void input(); void input1(); void output();
void main() /*递归分析*/ {
int f,p,j=0; char x; d[0]='E'; d[1]='='; d[2]='>'; d[3]='T'; d[4]='G'; d[5]='#';
printf("Please input character string(length<50,end of '#'):\n");
do{
scanf("%c",&ch); a[j]=ch; j++;
}while(ch!='#');
n1=j;
ch=b[0]=a[0];
printf("步骤\t文法\t分析串\t\t分析字符\t剩余串\n");
f=E1();
if (f==0) return; if (ch=='#')
{ printf("\nAccept! Right Expression!\n\n");
编译原理语法分析的实验报告
p=0;
x=d[p];
while(x!='#') {
printf("%c",x);p=p+1;x=d[p]; /*输出推导式*/ } }
else {
printf("\nError!!!\n"); printf("回车返回\n"); getchar();getchar(); return; }
printf("\n");
printf("回车返回\n"); getchar(); getchar(); }
int E1() { int f,t;
printf("%d\tE-->TG\t",total);total++; flag=1;
input(); input1();
f=T();
if (f==0) return(0); t=G();
if (t==0) return(0); else return(1); }
int E()
{ int f,t;
printf("%d\tE-->TG\t",total);total++;
e[0]='E';e[1]='=';e[2]='>';e[3]='T';e[4]='G';e[5]='#';
output(); flag=1; input(); input1(); f=T();
if (f==0) return(0); t=G();
if (t==0) return(0); else return(1);
编译原理语法分析的实验报告
int T()
{ int f,t;
printf("%d\tT-->FS\t",total);total++;
e[0]='T';e[1]='=';e[2]='>';e[3]='F';e[4]='S';e[5]='#';
output(); flag=1; input(); input1(); f=F();
if (f==0) return(0); t=S();
if (t==0) return(0); else return(1); }
int G() { int f;
if(ch=='+') { b[i1]=ch;
printf("%d\tG-->+TG\t",total);total++;
e[0]='G';e[1]='=';e[2]='>';e[3]='+';e[4]='T';e[5]='G';e[6]='#';
output(); flag=0; input();
input1();
ch=a[++i1]; f=T();
if (f==0) return(0); G();
return(1);
}
printf("%d\tG-->^\t",total);total++;
e[0]='G';e[1]='=';e[2]='>';e[3]='^';e[4]='#';
output(); flag=1;
input();input1(); return(1); }
int S()
编译原理语法分析的实验报告
int f,t;
if(ch=='*') {
b[i1]=ch;printf("%d\tS-->*FS\t",total);total++;
e[0]='S';e[1]='=';e[2]='>';e[3]='*';e[4]='F';e[5]='S';e[6]='#';
output(); flag=0;
input();input1(); …… 此处隐藏:3474字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




