编译原理-词法分析(附源码)

编译原理-词法分析(附源码)

ID:46592829

大小:20.88 KB

页数:5页

时间:2019-11-26

编译原理-词法分析(附源码)_第1页
编译原理-词法分析(附源码)_第2页
编译原理-词法分析(附源码)_第3页
编译原理-词法分析(附源码)_第4页
编译原理-词法分析(附源码)_第5页
资源描述:

《编译原理-词法分析(附源码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、词法分析实验报告一、实验项目名称词法分析二、实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。三、实验环境Windows10MicrosoftVisualStudio2015四、实验内容编制一个读单词过程,源程序为一个文件,读取该文件,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、界符五大类。并依次输出各个单词的内部编码及单词符号自身值。单词的内部编码如下:1、保留字:if、int、for、while、do、return、break、continue;单

2、词种别码为1;2、标识符:除保留字外的以字母开头,后跟字母、数字的字符序列;单词种别码为2;3、常数为无符号整形数;单词种别码为3;4、运算符包括:+、-、*、/、=;单词种别码为4;5、分隔符包括:,、;、{、}、(、);单词种别码为5。五、实验步骤在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并填入适当的信息表。经过词法分析后,源程序字符串(源程序的外部表示)被翻译成具有等长信息的单词串(源程序的内部表示),并产生两个表格:常数表和标识符表,它们分别包含了源程序中的所有常数和所有标识符。(1)定义

3、部分:定义常量、变量、数据结构。(2)初始化:从文件将源程序全部输入到字符缓冲区中。(3)取单词前:去掉多余空白。(4)取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析类型。(5)显示结果六、源程序清单、测试数据、结果#include#include#include#defineMAX100usingnamespacestd;voidmain(){//二维char数组主存储的初始化chara[MAX][15],ch='a',before;inti=0,j=0;for(i=0;i

4、=0;j<15;j++){a[i][j]=NULL;}}i=0;j=0;fstreamfile;//文件打开并读入字符file.open("D:\text.txt",ios::in);if(file){cout<<"文件打开成功"<

5、***********************************

6、

7、

8、

9、*************************************************************前一字符为符号当前为字母数字**********************************************************************************************************************************************************

10、

11、if(((ch>=32&&ch<=47

12、)

13、

14、(ch==10)

15、

16、(ch>=58&&ch<=64)

17、

18、(ch>=91&&ch<=94)

19、

20、(ch==96)

21、

22、(ch>=123&&ch<=126))

23、

24、(((before>=32&&before<=47)

25、

26、(before==10)

27、

28、(before>=58&&before<=64)

29、

30、(before>=91&&before<=94)

31、

32、(before==96)

33、

34、(before>=123&&before<=126)))&&(ch>65&&ch<=90

35、

36、ch>=97&&ch<=122

37、

38、ch>=48&&ch<=57)){if(ch!=32&&ch!=10){i+

39、+;j=0;}}if(ch!=32&&ch!=10){a[i][j]=ch;j++;}}file.close();ofstreamfileout("D:\out.txt",ios::ate);//判断字符串并输出for(intk=0;k=65&&a[k][0]<=90

40、

41、a[k][0]>=97&&a[k][0]<=122)//判断第一个字符是字母{if(a[k][1]>=65&&a[k][1]<=90

42、

43、a[k][1]>=97&&a[k][1]<=122)//判断第二个字符是字母{//判

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

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

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