词法分析器报告

词法分析器报告

ID:43607517

大小:218.15 KB

页数:16页

时间:2019-10-11

词法分析器报告_第1页
词法分析器报告_第2页
词法分析器报告_第3页
词法分析器报告_第4页
词法分析器报告_第5页
资源描述:

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

1、编译原理实验报告实验题目:词法分析器构造段青松指导教师:姓名:班级:学号:实验成绩:实验题目词法分析器构造实验目的总体任务:和要求通过对给定源语言词法分析程序的设计,加深对词法分析原理的理解,掌握源语言的接受、存贮、预处理和扫描分析,生成正确的单词符号串二元式序列。说明提示:1.本实验要求的直接分析法,即从左向右扫描源程序,一口发现有独立意义的字符串时,叩将其改造统一•长度的二元组(t,i)输出,其中t表示单词种别,i为相应内部衣示,本题t分为五类:K(关键字)、1(标识符)、C(常数)、P(界符),L(标号)i为特定项的指针值,对应于每一类属性的单词均设置相应的有贮表格,在识别过程中每识別出

2、一个单词,则将其顺序放入相应的符号表中。2.源程序利用行编辑录入,以TEXT文件形式存贮在盘上,词法分析程序,先对源程序作预处理扫描生成新的TEXT文件。预处理的功能是剔除无用的空H、跳格、回车和换行等编辑性字符;去掉注解部分,连接继续行,给出句未符。3.本实验作为编译过程的第一•阶段和后续实验的前提,所仃生成结果都必须作为永久文件存贮。设计思想词法分析时,首先要对源程序进行预处理,去掉的多余的空格符号和注释,其中注释要删除,与框架多个空格变成一个,并在结尾加一个标识符如#,用來表示结束。预处理阶段结束,再迓行逐词分析。若第一位是字母,则他可能是关键字、标号、标示符;若第一位是数字,则可能是常

3、数、标号、非法标号;若为其他字符,则可能是界符、运算符、关系符、或非法字符。这样细分后再进行查表判断。核心算法定义符号表:char*keyword[4]={”IF',”THEN”,”ELSE”,“GOTO”};char*operatomum[4]={char*comparison[6]char*interpunction[4]={":”,”)”};主要函数:boolsearch(charsearchstr[],intwordtype)charletterprocess(charch)//isalnum判断是否为字母或者数字charnumberprocess(charch)〃数字charothe

4、rprocess(charch)〃数字,字母,非括号charprocess(charch)//读字符voidpro_process(char*buf)〃预处理voidmain()//主函数源程序及注释#include#include#include#include#includc#include#include#include#dcfincNULL0FILE*fp;FILE*out,*in;charch;charfilename[50]

5、;char*keyword[4]={"IF",nTHENn,"ELSE","GOTO"};char*operalomum[4]=叮‘严char*comparison[6]={”v=“,char*interpunction[4]={intx=・l,y=-1,z=・1;#defineKlen10#defineHen30#defineClen40#definePlen20#defineOlen20#defineLien10charKlKlenJll0J,PlPlen][2]JlIlen]l20J,OlOlenJl2J;intC[Clen],L[Llen];boolscarch(charscarchs

6、tr[],intwordtypc){inti;switch(wordtype){case1:for(i=0;i<=3;i++){if(strcmp(keyword[i],searchstr)==0)returntrue;}case2:for(i=0;i<=3;i++){if(strcmp(operatornum[i],searchstr)==0)returntrue;}case3:for(i=0;i<=5;i++){if(strcmp(comparison[i]5searchstr)=0)returntrue;}case4:for(i=0;i<=3;i++){if(strcmp(interpu

7、nction[iJ.searchstr)==0)returntrue;}}returnfalse;}charletterprocess(charch)//isalnum判断是否为字母或者数字{inti=-lj=-l,k,a=l;charletterf10],tcmp[10];while(isalnum(ch)!=0){letter[++i]=ch;ch=fgetc(fp);}lcttcr[i+l]

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

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

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