词法分析程序

词法分析程序

ID:37570104

大小:122.50 KB

页数:10页

时间:2019-05-25

词法分析程序_第1页
词法分析程序_第2页
词法分析程序_第3页
词法分析程序_第4页
词法分析程序_第5页
资源描述:

《词法分析程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、北华航天工业学院《编译原理》课程实验报告课程实验题目:词法分析器实验作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:B08512作者学号:___20084051212__________作者姓名:魏永丰指导教师姓名:李建义完成时间:2011年3月25日一、实验目的了解词法分析程序的两种设计方法:1.根据状态转换图直接编程的方式;2.利用DFA编写通用的词法分析程序。二、实验内容及要求1.根据状态转换图直接编程编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一

2、遍,如下图所示。具体任务有:(1)组织源程序的输入(2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件(3)删除注释、空格和无用符号(4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。(5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。常量表结构:常量名,常量值三、实

3、验程序设计说明1.实验方案设计1.Initscanner函数:程序初始化:输入并打开源程序文件和目标程序文件,初始化保留字表2.Scanner函数:若文件未结束,反复调用lexscan函数识别单词。3.Lexscan函数:根据读入的单词的第一个字符确定调用不同的单词识别函数4.Isalpha函数:识别保留字和标识符5.Isnumber函数:识别整数,如有精力,可加入识别实数部分工功能6.Isanotation函数:处理除号/和注释7.Isother函数识别其他特殊字符8.Output函数:输出单词的二元式到目标文件,输出格式(单词助记符,单词内码值),如(int,-)(rlop,

4、>)……9.Error函数:输出错误信息到屏幕10.除此之外,还可以设置查符号表,填写符号表等函数,学生可自行设计。2.程序源代码#include#include#include#include#defineMAX10//保留字符号长度#defineMAXSIZE45//保留字和特殊符号表长度#defineNUM30//标识符和常数的个数FILE*in,*out;//指向文件的指针charinfile[MAX];//文件名字chartoken[MAX];charWord[NUM][MAX];//标识符ch

5、arconsts[NUM][MAX];//常数charlownum[NUM][MAX]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19""20","21","22","23","24","25","26","27","28","29"};//自定义表intn=1;//行号intnum=0;//错误统计数typedefstructKey_word//保留字和特殊符号表结构{//intkeyNum;charkeyWord[MAX];charkeySign

6、[MAX];charkeyValue[MAX];}Key_word;//初始化保留字表Key_wordKey[MAXSIZE]={{"int","int","-"},{"char","char","-"},{"float","float","-"},{"void","void","-"},{"const","const","-"},{"for","for","-"},{"if","if","-"},{"else","else","-"},{"then","then","-"},{"while","while","-"},{"switch","switch","-"},{"brea

7、k","break","-"},{"begin","begin","-"},{"end","end","-"},{"","",""},{"","",""},{"","id",""},{"","num",""},{"+","+","-"},{"-","-","-"},{"*","*","-"},{"/","/","-"},{"%","%","-"},{"(","(","-"},{")",")","-"},{"[","[","-"},{"]","]","-"},{"","",""},

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

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

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