网站大量收购独家精品文档,联系QQ:2885784924

合肥工业大学编译原理实验报告.docx

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
合肥工业大学计算机与信息学院 编译原理实验报告 专 业: 学 号: 姓 名: 指导老师: 完成时间: 实验一词法分析设计 一、 实验目的 通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设 计的原理和构造方法,使学牛对编译的基木概念、原理和方法有完整和清楚的理 解,并且能够正确和熟练地运用。 二、 实验环境 Windows 8. 1、Visual Studio 2013 C++ 三、 实验原理 实验数据结构说明 Tab 1 e string str[40] int strcount string name 存储string 存储string的数目 存储type名 Table 0 ~Table() void selntime(string strTemp) string getncimeO void update (string strTemp) void init(string filename) int search (string strTemp) 构造函数 析构函数 设員name值 获取name值 添加strTemp的值 初始化table 在table中査询strTemp siring value int type int pointer 存储分析单词的值 Type的编号 单词的位置 OutToken string tyname 存储在表中位置 int line 分析单词的行的值 int row 分析单词的列的值 OutToken(string val, int t, int p, string tn, int 冇参数构造函数 1, int r) ^OutToken () 析构函数 friend ostream operator (ostream output, 重载 函数 OutToken ot) Table Keyword Type 1: C++关键字 Table Seperator Type 2:分界符 Table sumoperator Type 3:算术运算符 Table reloperator Type 4:关系运算符 Tabic constanl Type 5:常数 Table idenlifier Type 6:标识符 TokenAnalyzei OutTokcn outtokon 二元式 TokenAnalyzer() 构造函数 TokcnAnalyzcr() 析构函数 void ini ttableO 初始化表 void display() 输出所有单词二元式 void strsearch (string strin, int line, int row) 分析strin void readcode() 读取源代码 实验算法描述 1)词法分析设计流程图 输出 2)词法分析程序框图 TXT中浜恥构建表 TXT中咦取TSR代码 输出 OutTokaa 3)统计字符位置程序框图 四、实验内容 使用C++语言实现对C++语言字集的源程序进行词法分析。通过输入源程序 从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自 身值;若遇到错误则显示ERROR,然后跳过错误部分继续显示;同时进行标识符 登记符号表的管理。 词法分析设计主要工作: (1) 从源程序屮读取字符 (2) 统计行数和列数用于错误单词的定位 (3) 删除空格类字符,包括回车、制表符空格 (4) 按拼写单词,并用(内码,屈性)二元式来表示,(屈性值一Token的 机内表示) (5) 如果发现错误则报告出错 (6) 根据需要是否填写标识符供以后各阶段使用 单词的基本分类: (1) 关键字:由各程序语言具有的固定意义的标识符(保留字例) (2) 标识符:用以表示各种名字的变量名、数组名、函数名 (3) 常数:任何数值常数 (4) 运算符:+、-、*、/ (5)关系运算符:〈、= 二、、二、?、 (6)分界符:;、,、(、)、[、]、{、} 五、实验要求 1、 编程时注意编程风格:空行的使用、注释的使用、缩进的使用等 2、 标识符填写的符号表需提供给编译程序的以后各阶段使用 3、 根据测试数据进行测试。测试实例分为三部分: (1) 各种合法输入 (2) 各种组合输入 (3)有记号组成的句子 4、词法分析程序设计要求输出形式 单词 二元序列 类型 位置(行,列) for (1, for) 关键字 (1, 1) 六、实验结果 分析代码 while (i = 1) { int k = 23 ; 〃注释 return ; } (2)分析结果 单词while1 单词 while 1 int k 23 ■ 9 i*e turn 元序列 ■ 34 264522164521 9 1 2 3152471251

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档