广东海洋大学编译原理(实验1消除程序中的注释).doc

广东海洋大学编译原理(实验1消除程序中的注释).doc

ID:56241898

大小:155.00 KB

页数:4页

时间:2020-03-23

广东海洋大学编译原理(实验1消除程序中的注释).doc_第1页
广东海洋大学编译原理(实验1消除程序中的注释).doc_第2页
广东海洋大学编译原理(实验1消除程序中的注释).doc_第3页
广东海洋大学编译原理(实验1消除程序中的注释).doc_第4页
资源描述:

《广东海洋大学编译原理(实验1消除程序中的注释).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称实验1:消除程序中的注释课程名称编译原理课程号16242211学院(系)数计学院专业计算机科学与技术班级计科1141学生姓名学号实验地点科425实验日期2017.2.28一、实验目的对使用高级程序设计语言编写的源程序进行处理,为词法分析做准备二、实验内容及步骤对C或C++等高级程序设计语言编写的源程序中的//注释和/*…*/注释进行删除,保留删除后的源程序。要求以文件形式进行保存。三、程序分析程序主要功能就是消除已经编写好的源程序中的注释。在源程序中注释有两种形式,一种是单行注

2、释,用“//”表示,另一种是多行注释,用“/*…*/”表示。针对这两种形式,程序中用了if..else..语句加以判断,并做出相应的处理。在这里还有可能出现另一种情况,上述两种注释符号可能出现在引号中,出现在引号中的注释符号并没有注释功能,因此在引号中出现的注释符号不应该被消除。所以,本实验所要编写的程序将要分三种情况分析。在这里,我们先对引号情况进行处理。程序在对源程序进行一个一个字符读取,若是遇到第一个双引号,则用变量temp保存起来,然后在对接下来读取到的字符,与它将temp进行比较,不等,则输出到目标文件,相等,则把第二个双引号输出到目标文

3、件后,重新循环接下来的字符,看它属性第几种情况。第二种情况是对单行注释进行处理。若在读取源文件时,遇到了第一个斜杠,则保存在变量temp2,此时的斜杠不可能在双引号中,因为它已经经过了第一种情况的判断。接下来对斜杠下一个字符进行读取,若为斜杠,则是单行注释,若为*,则是多行注释。单行注释后的字符不输出到目标文件,直到遇到换行符。多行注释则寻找*/。若两种情况都不是,则输出之前保存的值,即temp2的值到目标文件,这种情况针对字符/,即单引号中的/。四、源代码#include#include#include

4、manip>#includeusingnamespacestd;intmain(){cout<<'/';4ifstreamifile;//建立文件流对象ofstreamofile;ifile.open("f:\上机实验题\C++\ConsoleApplication2\ConsoleApplication2\源.cpp");//打开F盘根目录下的fileIn.txt文件ofile.open("f:\上机实验题\C++\ConsoleApplication2\ConsoleApplication2\源.obj")

5、;if(ifile.fail()

6、

7、ofile.fail()){//测试打开操作是否成功cerr<<"openfilefail";returnEXIT_FAILURE;/*返回值EXIT_FAILURE(在cstdlib库中定义),用于向操作系统报*告打开文件失败*/}charch;ch=ifile.get();//进行读写操作while(!ifile.eof()){if(ch==34){//双引号中若出现“//”,双引号中的字符不消除chartemp=ch;//第一个双引号ofile.put(ch);ch=ifile.get();while(

8、!ifile.eof()){if(ch!=temp){//寻找下一个双引号ofile.put(ch);ch=ifile.get();}else{ofile.put(ch);break;}}ch=ifile.get();continue;//双引号情况结束,重新新一轮判断}if(ch==47){//出现第一个斜杠chartemp2=ch;ch=ifile.get();if(ch==47){//单行注释情况ch=ifile.get();while(!(ch==''))ch=ifile.get();}elseif(ch=='*'){//多行注释情况w

9、hile(1){ch=ifile.get();while(!(ch=='*'))4ch=ifile.get();ch=ifile.get();if(ch==47)break;}ch=ifile.get();}else{ofile.put(temp2);//temp2保存第一个斜杠,当上述两种情况都没有时,将此斜杠输出}//ch=ifile.get();}//cout<

10、ile.close();cout<<"/////*////ret/rtr////";system("pause");ret

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。