编译技术-实验1-词法分析

编译技术-实验1-词法分析

ID:13714042

大小:153.52 KB

页数:11页

时间:2018-07-24

编译技术-实验1-词法分析_第1页
编译技术-实验1-词法分析_第2页
编译技术-实验1-词法分析_第3页
编译技术-实验1-词法分析_第4页
编译技术-实验1-词法分析_第5页
资源描述:

《编译技术-实验1-词法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、标准实验报告(实验)课程名称编译技术实验报告学生姓名:学号:指导教师:实验地点:实验时间:13.10.19一、实验室名称:通用计算机软件实验室二、实验项目名称:词法分析器三、实验学时:4学时四、实验原理:单词单词表示的源程序词法分析程序字符串表示的源程序词法分析程序的实现方案五、实验目的:理解词法分析在编译程序中的作用,掌握词法分析的实现方法和技术,以加深对编译技术中词法分析的理解。六、实验内容:用C语言(或C++)对一个简单语言编制一个一遍扫描编译程序,扫描源程序字符,按语言的词法规则识别各类单词(如:语言的保留字

2、、标识符、常数)、符号(如运算符、赋值符等),并将有关字符组合成为单词,完成相关转化和处理,最终以二元式形式输出。其中标识符和无符号整数各作为一类,保留字和符号一符一类。具体实验内容包括:1.从源程序的第一个字符开始,顺序地读字符,根据所读进的字符识别各类单词;2.将所识别的单词分类别分别存储到符号表;其中对常数完成数字字符串到数值的转换;3.删去空格、换行、制表等字符和注释。4.按要求输出源程序的“单词符号流”,并输出相应符号表的内容,以便检查。实验输出格式要求1.首先输出自己姓名、学号;2.之后输出词法分析结果:

3、行号+词法分析结果二元式,即:linexx:(单词类别,单词属性)3.如果类别是标识符,还需要输出该标识符在符号表中的内容;4.如果类别是常数,还需要输出该常数的值;5.最后将词法分析结果打印到屏幕并输出到当前目录的lex.txt文件6.将符号表内容打印到屏幕并输出到当前目录的symtab1.txt文件7.将词法错误打印到屏幕并输出到error.txt七、实验器材(设备、元器件):硬件要求:pc机,CPUPII以上,64M内存,100M硬盘空间即可。软件要求:Windows7/XP/2003等,包括C编译器的IDE。

4、八、实验步骤、实验编程与运行结果:1.程序编码#include#include#include#definetrue1#definefalse0#defineMAX100#defineMAX130#define$SYMBOL1#define$CONSTANT2#define$ADD3#define$SUB4#define$MUL5#define$DIV6#define$L7#define$LE8#define$G9#define$GE10#define$NE1

5、1#define$E12#define$ASSIGN13#define$LPAR14#define$RPAR15#define$COM16#define$SEM17#define$INT18#define$BEGIN19#define$FUNCTION20#define$IF21#define$THEN22#define$ELSE23#define$END24#define$READ25#define$WRITE26FILE*fp_print;FILE*fp_symbol;FILE*fp_error;FILE*fp;

6、typedefstructEys{charBM[MAX1];intn;}Erys;Eryssym[MAX]={''},cons[MAX]={''};/*定义符号表和常数表*/chartoken[MAX1],character='',ret='';intc=0,s=0,t,l=1;voidGetchar(){character=fgetc(fp);return;}voidgetnbc(){/*读入非空白字符函数*/while(character==''

7、

8、character=='t')Getchar(

9、);return;}voidconcat(){/*连接字符串函数*/token[t]=character;t=t+1;return;}intletter(){/*判断字母的函数*/if(character>='A'&&character<='Z')returntrue;elseif(character>='a'&&character<='z')returntrue;elsereturnfalse;}intdigit(){/*判断数字的函数*/if(character>='0'&&character<='9')retu

10、rntrue;elsereturnfalse;}charretract(){/*回退字符函数*/ret=character;returnret;}intreserve(){/*处理保留字的函数*/if(!strcmp(token,"int"))return$INT;if(!strcmp(token,"begin"))return$BEGIN;i

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

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

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