收藏 分享(赏)

编译实习-词法分析.doc

上传人:fmgc7290 文档编号:9496999 上传时间:2019-08-10 格式:DOC 页数:13 大小:556.26KB
下载 相关 举报
编译实习-词法分析.doc_第1页
第1页 / 共13页
编译实习-词法分析.doc_第2页
第2页 / 共13页
编译实习-词法分析.doc_第3页
第3页 / 共13页
编译实习-词法分析.doc_第4页
第4页 / 共13页
编译实习-词法分析.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

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

3、即: ofstream outfile; int x=0; outfile.open(“D:test.txt“);while(sx!=#)outfile = (4)界限符 ( ) ; , (5)结束符 #1.3.4 各种单词符号对应的类别码单词符号 类别码 单词符号 类别码begin 1 21else 5 22while 6 = 23do 7 24int 8 ( 25char 9 ) 26标识符 10 27常数 11 28+ 12 29- 13 ; 30* 14 , 31/ 15 32= 16 33:= 17 # 042. 设计2.1 数据结构定义了以下字符串类型数据:CString m_En

4、terString :用于接受编辑框1输入的源程序CString m_OutputString; :用于保存输出到编辑框 2 的内容,即单词符号 与其对应的类别码char *s=m_EnterString.GetBuffer() :用于将输入的 Cstring 类型转换为字符数组 类型,以存入文件中ofstream outfile :用于将源程序写入文件FILE *fpin :用于读取文件内容,即源程序 界面数据结构:IDC_STATIC1 (Group-box Control) 放输入框的框IDC_STATIC2 (Group-box Control) 放输出框的框IDC_EDIT1 (Ed

5、it Control) 输入编辑框IDC_EDIT2 (Edit Control) 输出编辑框IDOK (Button Control) 确定按钮IDCANCEL (Button Control) 取消按钮5IDD_CIFA_DIALOG (Dialog) 整个界面框界面如下图所示:2.2. 算法及程序流程图2.2.1 算法设计:算法的基本任务是从字符串表示的源程序中识别出具有独立意思的单词符号,无独立意义的字符视为错误字符,基本思想是根据扫描到单词符号的第一个字符的各类,拉出相应的单词符号,根据字符与类别码对应表,找到相应的类别码并输出,具体见流程图。62.2.1 程序流程图如下:YNN开始

6、输入源程序txt 格式在于 D 盘打开已存储的文件初始化文件指针是#?识别指针内容结束YN空/换行?指向下一个字符YN字母? 数字? 界符?YN将字符加入 arr指向下一个字符字母/数字?Y将 arr 与 key 中项比较匹配?根据返回值输出arr 与其类别码指向下一字符标识符N加入 arr指下个字符数字?Y输出arr 类别码为 11N输出ch 为界符相应的类别码Y输出ch 为不可识别字符72.3. 界面83. 程序运行实例3.1 实例 1 3.2 实例 2 93.3 实例 3 103.4 实例 4 113.5 非合法词法输入4. 部分程序核心源代码void CcifaDlg:Start()ofstream outfile;int x=0;outfile.open(“D:test.txt“);if(!outfile)cout=a)|(c=A)return 1;elsereturn 0;int CcifaDlg:IsDigit(char c)if(c=0elsereturn 0;5. 总结通过此次实验,自己动手写这样一个简单的词法分析器,通过设计、编制并调试词法分析器,加深对词法分析原理的理解;熟悉了构造词法分析程序的手工方式的相关原理,在使用C+中MFC编写程序的过程中,也加强了自己的编程练习。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报