源程序的输入和扫描.doc

源程序的输入和扫描.doc

ID:56199065

大小:48.00 KB

页数:6页

时间:2020-03-20

源程序的输入和扫描.doc_第1页
源程序的输入和扫描.doc_第2页
源程序的输入和扫描.doc_第3页
源程序的输入和扫描.doc_第4页
源程序的输入和扫描.doc_第5页
资源描述:

《源程序的输入和扫描.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、湖南农业大学信息科学技术学院学生实验报告姓名:年级专业班级日期年月日成绩课程名称编译原理实验实验名称源程序的输入和扫描实验类型设计性【实验目的、要求】理解源程序被编译器读取的过程,掌握扫描程序的编写方法。【实验内容】编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据);并编制一个扫描子程序,该子程序中每次调用能依次从存放源程序的输入缓冲区中读出一个有效字符。【实验环境】计算机CodeBlocks【实验步骤、过程】1功能描述扫描一段源程序,经字符分析后分离出关键字、

2、标识符、运算符、常数和分隔符,并分行显示。2程序结构描述从文本中读入源程序。利用flag标志记录当前字符的下一个字符的属性(如为空格flag就为0,为分隔符就为-1等)。并用结构体MySplit存储当前字符和其下一位标志flag。用while循环依次读入每个字符并判断。字符串暂存在buf_string中。以判断字符是否结束分为以空格结束,以分隔符结束,以注释结束,以运算符和其他字符合并结束,以及以字符结束。做不同处理。最后再分行显示。3流程图(或原理图)源程序Buff-text[]MySplit结构体数组

3、While循环下一个是分隔符?Flag=-1YNFlag=0下一个是空格?Flag=-2Y下一个是注释?NYFlag=1下一个是字符?NY结束4关键代码源程序://源程序输入和扫描#include#includestructMySplit{charc;charc_next;intflag;};intMygetchar(MySplit);intmain(intargc,char*argv[]){char*buf_text;//用来暂存键盘输入的文本char*buf_st

4、ring;//用来暂存一个字符串的(如一个关键字)MySplit*x;buf_text=(char*)malloc(sizeof(char)*50);//文本有多少个字母、数字、符号buf_string=(char*)malloc(sizeof(char)*10);//存储当前标识符、关键字x=(MySplit*)malloc(sizeof(MySplit)*50);for(inti=0;i<50;i++)buf_text[i]='';for(intg=0;g<10;g++)buf_string[g]

5、='';charc;intj=0;intk=0;intl=0;intm=0;FILE*fp=fopen("test.txt","r");//当前文件夹内名为test的txt文件printf("***************************************");printf("源文件:");c=fgetc(fp);while(c!=EOF)//一个字符一个字符的读入{putchar(c);buf_text[j]=c;j++;c=fgetc(fp);}fclose(fp);prin

6、tf("***************************************");printf("经扫描后的源文件如下:");while(k

7、{}else{buf_string[m]=x[l].c;printf("%s",buf_string);for(intg=0;g<10;g++)buf_string[g]='';m=0;}}elseif(x[l].flag==0)//该字符的下一个是空格{if(x[l-1].flag==0)//该字符本身是空格{}else{buf_string[m]=x[l].c;printf("%s",buf_string);for(intg=0;g<10;g++)buf_string[g]='';m=

8、0;}l++;//越过空格}elseif(x[l-1].flag==-1&&x[l].flag==1)//该字符是符号且后紧跟字母或数字(如"=b"或",b"){buf_string[m]=x[l].c;printf("%s",buf_string);for(intg=0;g<10;g++)buf_string[g]='';m=0;}elseif(x[l].flag==-2)//该字符的下一个是注释起始{if(x[l-

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

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

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