- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[编译原理课程设计报告asd
目录
一、开发工具和运行环境 ……………………………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.程序流程图
三、系统详细设计
重要数据定义数据结构定义:
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,_decimal,-1,_resunsigned,-1,-1},
您可能关注的文档
最近下载
- 老友记台词剧本第一季第1集中英双语左右对照.pdf VIP
- 2025年5月18日河南省事业单位联考《公共基础知识》试题及答案解析.pdf
- 2018年最新发布的ISO50001-2018能源管理体系标准条款中英文版..pdf VIP
- 中欧班列“齐鲁号”跨境物流供应链金融模式研究.pdf VIP
- 运动心理学PPT完整全套教学课件.pptx VIP
- 七年级历史数字故事——隋朝大运河课件.ppt VIP
- 旅游职业礼仪-全套PPT课件.pptx
- 2025人教版数学三年级上册全册教学课件.ppt
- 居民健康档案知识培训课件.pptx VIP
- 2025年秋季人教版7年级上册数学全册教学课件(新教材).pptx
文档评论(0)