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

编编译原理课程设计报告as.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编编译原理课程设计报告as

目录 一、开发工具和运行环境 ……………………………3 二、系统需求分析………………………………………3 三、系统详细设计………………………………………6 四、系统实现 …………………………………………11 五、调试 ……………………………………………25 六、系统开发总结……………………………………30 七、附录和参考资料 ………………………………31 开发工具和运行环境 开发工具:Microsoft Visual Studio c++ 6.0 运行环境:CPU为P4 1.0GHz以上,内存512M或者更多,硬盘至少50G。 二、系统需求分析 1.概要 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。一般将编译过程划分成词法分析,语法分析,语义分析,中间代码生成,代码优化和目标代码生成六个阶段。 词法分析是编译的第一个阶段,它的主要任务是从左至右逐个字符的对源程序进行扫描,产生一个个单词序列,用以语法分析。执行词法分析的程序称为词法分析程序或扫描程序,它所输出的单词符号常采用以下二元式表示:(单词种别,单词自身的值)。 2.功能需求 根据C语言的说明语句形式,手工构造一个对说明语句进行分析的词法分析程序。该程序能对从键盘输入形如:“const count=10,sum=81.5,char1=’f’,string1=”hj”, max=169;” 的常量说明串进行处理,分析常量说明串中各常量名、常量类型及常量值,并统计各种类型常量个数。 3.设计需求 a.输入的常量说明串,最后以分号作结束标志 b.根据输入串或读入的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容; c.常量名以字母开头,后跟若干个字母,数字或下划线 d.常量之间以“,”号隔开,也作为常量之间的风格标志 e.判断类型 A:字符型常量定义为放在单引号内的一个字符; B:字符串常量定义为放在双引号内所有内容 C:整型常量定义为带或不带+、- 号,不以0开头的若干数字的组合; D:实型常量定义为带或不带+、- 号,不以0开头的若干数字加上小数点再后跟若干数字的组合 f.空格处理:A:出现在常量名之间,如( str 1)报错 B:出现在常量数字之中,如(“23. 32” 其他为符合规则,不处理 g.统计并输出串或文件中包含的各种类型的常量个数,如果同常量名相同,看做覆盖,计数只加一次 h. 以二元组(类型,值)的形式输出各常量的类型和值; i.根据常量说明串置于高级语言源程序中时可能出现的错误情况,模仿高级语言编译器对不同错误情况做出相应处理。 4.程序流程图 开始输入常量说明串 开始 输入常量说明串 判断const 识别标识符 判断‘=’ 识别常量值 当前符号 为‘;’ 结束 为‘,’ 打印输出 报错 三、系统详细设计 重要数据定义数据结构定义: 1): 基本数据类型和运算符定义 typedef enum { _unsigned=0, /*无符号整数*/ _resunsigned,/*余留无符号整数*/ _decimal, /*十进制小数*/ _resdecimal, /*余留十进制小数*/ _exp, /*指数部分*/ _intexp, /*整指数*/ _resexp, /*余留整指数*/ _op, /*操作符*/ _identifiers,/*标识符*/ _char, /*字符*/ _string, /*字符串*/ _bool /*bool类型*/ }StatusSet; 2): 二元式输出定义 typedef struct _WordType { Int type; //单词类型 char *value;//值 }Word; 3):整数,实数识别状态转换表定义 int m_switchmap[MAXSTATUS][MAXSTATUS]= {-1,_resunsigned,_exp,_decimal,-1,-1,-1,-1}, {-1,_resunsigned,_exp,_d

文档评论(0)

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

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

1亿VIP精品文档

相关文档