编译原理实验报告-词法分析器构造

编译原理实验报告-词法分析器构造

ID:35617047

大小:151.00 KB

页数:14页

时间:2019-04-02

编译原理实验报告-词法分析器构造_第1页
编译原理实验报告-词法分析器构造_第2页
编译原理实验报告-词法分析器构造_第3页
编译原理实验报告-词法分析器构造_第4页
编译原理实验报告-词法分析器构造_第5页
资源描述:

《编译原理实验报告-词法分析器构造》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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

3、示符;若第一位是数字,则可能是常数、标号、非法标号;若为其他字符,则可能是界符、运算符、关系符、或非法字符。这样细分后再进行查表判断。核心算法定义符号表:char*keyword[4]={"IF","THEN","ELSE","GOTO"};char*operatornum[4]={"+","-","*","/"};char*comparison[6]={">","<",">=","<=","=","<>"};char*interpunction[4]={",",":","(",")"};主要函数:boolsearch(charsearchstr[],intwordtype)

4、charletterprocess(charch)//isalnum判断是否为字母或者数字charnumberprocess(charch)//数字charotherprocess(charch)//数字,字母,非括号charprocess(charch)//读字符voidpro_process(char*buf)//预处理voidmain()//主函数源程序及注释#include#include#include#include#include#include#i

5、nclude#include#defineNULL0FILE*fp;FILE*out,*in;charch;charfilename[50];char*keyword[4]={"IF","THEN","ELSE","GOTO"};char*operatornum[4]={"+","-","*","/"};char*comparison[6]={">","<",">=","<=","=","<>"};char*interpunction[4]={",",":","(",")"};intx=-1,y=-1,z=-1;#defineKl

6、en10#defineIlen30#defineClen40#definePlen20#defineOlen20#defineLlen10charK[Klen][10],P[Plen][2],I[Ilen][20],O[Olen][2];intC[Clen],L[Llen];boolsearch(charsearchstr[],intwordtype){inti;switch(wordtype){case1:for(i=0;i<=3;i++){if(strcmp(keyword[i],searchstr)==0)returntrue;}case2:for(i=0;i<=3;i

7、++){if(strcmp(operatornum[i],searchstr)==0)returntrue;}case3:for(i=0;i<=5;i++){if(strcmp(comparison[i],searchstr)==0)returntrue;}case4:for(i=0;i<=3;i++){if(strcmp(interpunction[i],searchstr)==0)returntrue;}}returnfalse;}charletterprocess(charch)//isalnum

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

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

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