编译原理课程设计报告as.doc
文本预览下载声明
目录
一、开发工具和?运行环境 ……………………………3
二、系统需求分?析………………………………………3
三、系统详细设?计………………………………………6
四、系统实现 …………………………………………11
五、调试 ……………………………………………25
六、系统开发总?结……………………………………30
七、附录和参考?资料 ………………………………31
开发工具和?运行环境
开发工具:Micro?soft Visua?l Studi?o c++ 6.0
运行环境:CPU为P?4 1.0GHz以?上,内存512?M或者更多?,硬盘至少5?0G。
二、系统需求分?析
1.概要
编译程序完?成从源程序?到目标程序?的翻译工作?,是一个复杂?的整体的过?程。从概念上讲?,一个编译程?序的整个工?作过程是划?分成阶段进?行的,每个阶段将?源程序的一?种表示形式?转换成另一?种表示形式?,各个阶段进?行的操作在?逻辑上是紧?密连接在一?起的。一般将编译?过程划分成?词法分析,语法分析,语义分析,中间代码生?成,代码优化和?目标代码生?成六个阶段?。
词法分析是?编译的第一?个阶段,它的主要任?务是从左至?右逐个字符?的对源程序?进行扫描,产生一个个?单词序列,用以语法分?析。执行词法分?析的程序称?为词法分析?程序或扫描?程序,它所输出的?单词符号常?采用以下二?元式表示:(单词种别,单词自身的?值)。
2.功能需求
根据C语言?的说明语句?形式,手工构造一?个对说明语?句进行分析?的词法分析?程序。该程序能对?从键盘输入?形如:“const? count?=10,sum=81.5,char1?=’f’,strin?g1=”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.程序流程图?
开始输入常量说
开始
输入常量说?明串
判断con?st
识别标识符?
判断‘=’
识别常量值?
当前符号
为‘;’
结束
为‘,’
打印输出
报错
三、系统详细设?计
重要数据定?义数据结构?定义:
1): 基本数据类?型和运算符?定义
typed?ef enum {
_unsi?gned=0, /*无符号整数?*/
_resu?nsign?ed,/*余留无符号?整数*/
_deci?mal, /*十进制小数?*/
_resd?ecima?l, /*余留十进制?小数*/
_exp, /*指数部分*/
_inte?xp, /*整指数*/
_rese?xp, /*余留整指数?*/
_op, /*操作符*/
_iden?tifie?rs,/*标识符*/
_char?, /*字符*/
_stri?ng, /*字符串*/
_bool? /*bool类?型*/
}Statu?sSet;
2): 二元式输出?定义
typed?ef struc?t _Word?Type
{
Int type; //单
显示全部