编译实习-词法分析

编译实习-词法分析

ID:6651884

大小:556.26 KB

页数:13页

时间:2018-01-21

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

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

1、编号:实习一二三四五六七八九十总评教师签名成绩《编译原理》课程实习报告编号:实习题目:词法分析器专业(班):学生学号:学生姓名:任课教师:2010 年12月29日121.问题定义和分析1.1实习目的1.2实习要求1.3要求分析2.程序设计2.1.数据结构2.2.算法及程序流程图2.3.界面3.程序运行实例3.1实例13.2实例23.3实例33.4实例43.5非合法词法输入4.部分程序核心源代码5.总结121.问题定义与分析1.1实习目的构造一个小语言的词法分析程序。1.2实习要求(1)设计一个包含简单算术表达式、赋值语句、IF语句的小语言的文法。(2)根据此文法,构造一词法分析程序。输入

2、以“#”为结束符的源程序,输出为各类单词表和单词串文件。(3)源程序和输出的单词串均以文件的形式存放。单词的自身值均为其对应的表的指针,如标识符表的指针、常数表的指针等。(4)提交:实习报告、程序运行结果。1.3要求分析1.3.1输入部分输入为文法源程序,定义CString类型变量m_EnterString,用于获取编辑框1的输入,将其转换为char类型的数组,用s保研,即char*s=m_EnterString.GetBuffer(),再将s中的内容以文件形式保存于D盘test.txt中,即:ofstreamoutfile;intx=0;outfile.open("D:\test.t

3、xt");while(s[x]!='#'){outfile<

4、tLength(),arr.c_str());m_OutputString.Insert(m_OutputString.GetLength(),"1r");1.3.3待分析的简单的词法(1)关键字:beginendifthenelsewhiledointchar(2)标识符和数字(3)运算符+-*/=:=<<=<<<>>>=>>(4)界限符{}[]'();,(5)结束符#1.3.4各种单词符号对应的类别码单词符号类别码单词符号类别码begin1<18end2<=19if3<<20then4<>21else5>22while6>=23do7>>24int8(25char9)26标识符

5、10{27常数11}28+12'29-13;30*14,31/15[32=16]33:=17#0121.设计2.1数据结构定义了以下字符串类型数据:CStringm_EnterString:用于接受编辑框1输入的源程序CStringm_OutputString;:用于保存输出到编辑框2的内容,即单词符号与其对应的类别码char*s=m_EnterString.GetBuffer():用于将输入的Cstring类型转换为字符数组类型,以存入文件中ofstreamoutfile:用于将源程序写入文件FILE*fpin:用于读取文件内容,即源程序界面数据结构:IDC_STATIC1(Group

6、-boxControl)放输入框的框IDC_STATIC2(Group-boxControl)放输出框的框IDC_EDIT1(EditControl)输入编辑框IDC_EDIT2(EditControl)输出编辑框IDOK(ButtonControl)确定按钮IDCANCEL(ButtonControl)取消按钮IDD_CIFA_DIALOG(Dialog)整个界面框12界面如下图所示:2.2.算法及程序流程图2.2.1算法设计:算法的基本任务是从字符串表示的源程序中识别出具有独立意思的单词符号,无独立意义的字符视为错误字符,基本思想是根据扫描到单词符号的第一个字符的各类,拉出相应的单词

7、符号,根据字符与类别码对应表,找到相应的类别码并输出,具体见流程图。122.2.1程序流程图如下:YNN开始输入源程序txt格式在于D盘打开已存储的文件初始化文件指针是#?识别指针内容结束YN空/换行?指向下一个字符YN字母?数字?界符?YN将字符加入arr指向下一个字符字母/数字?Y将arr与key中项比较匹配?根据返回值输出arr与其类别码指向下一字符标识符N加入arr指下个字符数字?Y输出arr类别码为11N输出ch为界符相应

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

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

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