编译原理实验报告:实验一编写词法分析程序09123132徐裕

上传人:tia****nde 文档编号:36881309 上传时间:2018-04-03 格式:DOC 页数:8 大小:126KB
返回 下载 相关 举报
编译原理实验报告:实验一编写词法分析程序09123132徐裕_第1页
第1页 / 共8页
编译原理实验报告:实验一编写词法分析程序09123132徐裕_第2页
第2页 / 共8页
编译原理实验报告:实验一编写词法分析程序09123132徐裕_第3页
第3页 / 共8页
编译原理实验报告:实验一编写词法分析程序09123132徐裕_第4页
第4页 / 共8页
编译原理实验报告:实验一编写词法分析程序09123132徐裕_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《编译原理实验报告:实验一编写词法分析程序09123132徐裕》由会员分享,可在线阅读,更多相关《编译原理实验报告:实验一编写词法分析程序09123132徐裕(8页珍藏版)》请在金锄头文库上搜索。

1、编编译译原原理理实实验验报报告告实验名称:编写词法分析程序实验类型:验证型实验指导教师:何 中 胜专业班级:09 软件 Y姓 名:徐裕学 号:09123132电子邮件:实验地点:秋白楼 B720实验成绩:日期:2012 年 4 月 18 日一、实验目的一、实验目的 通过设计。测试词法分析器程序,实现从源程序中分出各种单词的方法,熟悉词法分 析程序中的工具自动机,进一步理解自动机理论,掌握文法转换成自动机的技术及有穷自 动机实现的方法。通过本实验,应达到以下目标: 1、掌握从源程序文件中读取有效字符的方法和产生源程序的内容表达式的方法 2、掌握词法分析的试验方法 3、上机测试编出的词法分析程序

2、二、实验过程二、实验过程 1.首先建好关键字表,分界符表和运算符表。 指针数组 k 为关键字表,每个数组元素存放一个关键字。采用不定长的方式。 指针 数组 P 存放分界符。为了简单起见,分界符、算术运算符和关系运算符都放在 p 表中,合 并成一类。 2.instring 数组为输入源程序和输出单词的单词缓存。 3.词法分析过程 根据从文件读到的第一个字符(有时还需读第二个字符),判断单词类,产生类号: 以字符 1 表示关键字;2 表示标识符;3 表示常数;4 表示分界符;5 表示运算符。 4.根据第一个字符来写出相应的处理程序和顺序,流程图如下:5.编写程序。三、实验结果三、实验结果 1. 运

3、行程序前先建好一个文本文件(09123132.txt),假如内容如图所示。2.运行程序,分析结果在 dos 中显示,每一个词都按要求被分析出来,并把每个词的类型 也打印出来,如下图所示:四、讨论与分析四、讨论与分析 实验内容我通过上网查找各种资料,并逐步的了解题目的要求,之后在编写上面,关 键字处理、标识符和数字处理代码写的比较顺,但是还是在各种符号上面吃亏,程序并不 是预期的,经过几次更改后,实验达到了要求,程序全部写完。 五、附录:五、附录:关键代码(给出适当注释,可读性高) void main() void lexical(FILE *FP); int i; FILE *fp; /指针

4、/printf(“请创建 k 表:n“); / 创建 k 表 k0=“BEGIN“; k1=“DO“; k2=“ELSE“; k3=“END“; k4=“IF“; k5=“THEN“; k6=“VAR“; k7=“WHILE“; /printf(“请创建 p 表:n“); / 创建 p 表 p0=“,“; p1=“;“; p2=“.“; p3=“:=“; p4=“(“; p5=“)“; p6=“+“; p7=“-“; p8=“*“; p9=“/“; p10=“; p14=“=“; p15=“=a instringn=0;puts(instring); ch=fgetc(fp); n=0; ch

5、1=ch; instringn+=ch1; else instringn=0; puts(instring);n=0; ch1=ch; instringn+=ch1; else if(ch1=) type=5;printf(“%dt“,type); if(ch=) instringn+=ch; instringn=0; puts(instring); ch=fgetc(fp); n=0; ch1=ch; instringn+=ch1; else instringn=0; puts(instring); n=0; ch1=ch; instringn+=ch1; else instringn=0;

6、 for(i=0;i=15;i+) if(strcmp(instring,pi)=0) break; if(i=5) type=4; else if(i=15) type=5; printf(“%dt“,type); puts(instring); n=0; ch1=ch; instringn+=ch1; ch=fgetc(fp); while(!feof(fp); if(ch1= | ch1=n | ch1=t) ; else instringn=0; printf(“%dt“,type); puts(instring); ) 六、实验者自评六、实验者自评(主要从实验态度、方法、效果上给一个客观公正的自我评价) 实验达到了预期的效果,做的比较的简单,但是关键字全部能够识别,独立完成本实 验,词法分析器可以运行一些简单的程序代码,途中遇到一些小麻烦后来全部在网络上解 决了。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号