编译原理词法分析实验

编译原理词法分析实验

ID:8957126

大小:53.50 KB

页数:11页

时间:2018-04-13

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

《编译原理词法分析实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验报告(一)----词法分析程序【目的要求】通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。【题目分析】本实验以用户指定的想编译的以C语言编写的文件作为词法分析程序的输入数据。在进行词法分析中,先自文件头开始以行为单位扫描程序,将该行的字符读入预先设定的一个数组缓冲区中,然后对该数组的字符逐词分割,进行词法分析,将每个词分割成关键字、标识符、常量和运算符四种词种,最终产生四个相对应的表,即关键字表、标识符表、常量表和运

2、算符表,它们以文件的形式进行存储。除此之外,还产生一个编译后的文件,它指定了每个词在四个表中的位置。【实验过程】下面就词法分析程序中的文件和主要变量进行说明:文件:cpile.c主程序文件key.txt关键字文件operation.txt运算符文件id.txt标识符文件const.txt常量文件after_com.txt编译后产生的文件主要变量:FILEsfp,nfp,ifp,kfp,cfp,pfp;charib[50][20]标识符表(动态生成)charcb[50][10]常量表(动态生成)charkb[44][10]

3、关键字表(预先定义好的)charpb[36][5]运算符表(预先定义好的)主要的子函数名:intnumber(chars[],inti);数字处理函数intletter(chars[],inti);字符处理函数intoperation(chars[],inti);运算符处理函数voidseti(chars[]);标识符建立函数voidsetc(chars[]);常量建立函数voidcfile(chars1[],chars2[],intm);将词和词所在表中位置写入编译后文件voiderror1(chars[]);字符处理

4、出错报告voiderror2(chars[]);标识符处理出错报告voiderror3(chars[]);运算符处理出错报告voidopenall();打开所有文件voidwriteall();将四个表写入文件voidcloseall();关闭所有文件下面简要分析一下词法分析程序的运行流程:能否打开所要编译的C语言文件否报错能判断当前字符是否是文件结束符是结束从源程序中读入一行到数组缓冲区否判断当前字符是否是’’是否判断当前字符是否是字母是转关键字和标识符处理否判断当前字符是否是数字是转数字处理否判断当前字符是否是运

5、算符是转运算符处理否【程序调试】现有源程序a.c清单如下:#includeintmain(intargc,charargv[]){charch;inti;ch='a';ch=ch+32;i=ch;printf("%did%c",i,ch);/打印/return0;}运行词法分析程序后,显示如下结果:after_com.txt文件:#[p--2]include[i--0]<[p--14]stdio.h[i--1]>[p--16]int[k--2]main[i--2]([p--7]int[k--2]ar

6、gc[i--3],[p--6]char[k--0][p--9]argv[i--4][[p--18]][p--21])[p--8]{[p--23]char[k--0]ch[i--5];[p--13]int[k--2]i[i--6];[p--13]ch[i--5]=[p--15]'[p--19]a[i--7]'[p--19];[p--13]ch[i--5]=[p--15]ch[i--5]+[p--10]32[c--0];[p--13]i[i--6]=[p--15]ch[i--5];[p--13]printf[k--33]([

7、p--7]"[p--1]%[p--4]d[i--8]id[i--9]%[p--4]c[i--10][p--20]n[i--11]"[p--1],[p--6]i[i--6],[p--6]ch[i--5])[p--8];[p--13]return[k--28]0[c--1];[p--13]}[p--25]key.txt关键字文件:0char1short2int3unsigned4long5float6double7struct8union9void10enum11signed12const13volatile14typed

8、ef15auto16register17static18extem19break20case21continue22default23do24else25for26goto27if28return29switch30while31sizeof32txt33printf34FILE35fopen36NULL37fclo

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

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

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