资源描述:
《编译预处理实验心得》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划编译预处理实验心得 预处理实验报告 1 2 3 4 5 实验三词法分析 实验目的: 1.熟悉给定的词法分析程序; 2.改进词法分析程序。 实验内容: 1.熟读给出的词法分析程序,理解程序设计内容。 2.尝试多方面改进此Test语言的文法,从而尝试在此词法分析程序的基础上改进程序,并编程运行。 实验要求: 1.写出改进的文法; 2.写出改进部分的程序。 注意:由于此实验有一定的难度,
2、所以可以自由组织3为同学一组,一组同学仅需上交一份报告。报告上需要写明3位同学的学号和姓名。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 实验结果: 修改的词法分析程序,添加保留字do、双分界符&&和
3、
4、以及单分界符!的处理。 修改后程序如下: #include #include //下面定义保留,为简化程序,使用字符指针
5、数组保存所有保留字。 //如果想增加保留字,可继续添加,并修改保留字数目 #definekeywordSum11 char *keyword[keywordSum]={"if","else","for","while","do","int","read","write","main","printf","include"}; //下面定义纯单分界符,如需要可添加 charsingleword[50]="+-*(){};,:!"; //下面定义双分界符的首字符 chardoubleword[10]=">=key
6、wordSum)//不是保留字,输出标识符fprintf(fout,"%st%s","ID",token);//输出标识符符号else//是保留字,输出保留字 fprintf(fout,"%st%s",token,token);//输出保留字符号}elseif(isdigit(ch))//数字处理目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能
7、及个人素质的培训计划 { token[0]=ch;j=1;ch=getc(fin);//读下一个字符while(isdigit(ch))//如果是数字则组合整数;如果不是则整数组合结束{token[j++]=ch;//组合整数保存在token中ch=getc(fin);//读下一个字符} token[j]=' ';//整数组合结束 fprintf(fout,"%st%s","NUM",token);//输出整数符号}elseif(strchr(singleword,ch)>0)//单分符处理 { toke
8、n[0]=ch;token[1]=' '; ch=getc(fin);//读下一个符号以便识别下一个单词 fprintf(fout,"%st%s",token,token);//输出单分界符符号}elseif(strchr(doubleword,ch)>0)//双分界符处理 { token[0]=ch;ch=getc(fin);//读下一个字符判断是否为双分界符if(ch=='=')//如果是=,组合双分界符{token[1]=ch;token[2]=' ';//组合双分界符结束ch=getc(fin);/
9、/读下一个符号以便识别下一个单词}else//不是=则为单分界符 token[1]=' ';目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 fprintf(fout,"%st%s",token,token);//输出单或双分界符符号}elseif(ch=='/')//注释处理 { ch=getc(fin);//读下一个字
10、符 if(ch=='*')//如果是*,则开始处理注释{charch1;ch1=getc(fin);//读下一个字符do{ch=ch1;ch1=getc(fin);}//删除注释while((ch!='*'
11、
12、ch1!='/')&&ch1!=EOF);//直到遇到注释结束符*/或文件尾c