没有合适的资源?快使用搜索试试~ 我知道了~
1、问题描述…………………………………………………………………… 3 2、设计思想……………………………………………………………………….. 5 3、功能结构.
资源详情
资源评论
资源推荐
计算机科学
-
1
-
目 录
一、整体框架
……………………………………………………………………………………. 1
二、词法分析
……………………………………………………………………………………. 3
1
、问题描述
............…………………………………………………………………… 3
2
、设计思想
........……………………………………………………………………….. 5
3
、功能结构
...…………………………………………………………………………….. 7
4
、调试分析
...…………………………………………………………………………….. 9
三、语法分析
…………………………………………………………………………………….. 10
1
、语法
...............……………………………………………………………………….. 10
2
、支持语句与数据类型
……………….…………………………………………….. 12
3
、数据结构
..…......……………………………………………………………………. 14
4
、设计思想
...............…………………………………………………………………. 15
四、中间代码与汇编代码
………………………………………..…………………………. 21
1
、四元式设计
......... ………………………………………………………………….. 22
2
、存储分配方案
...........………………………………………………………………. 23
3
、
Mips
指令与语义
...... ………………………………………………………………. 26
4
、存储器的分配管理
..... …………………………………………………………….. 27
5
、四元式转汇编
..... ……………………………………………………………..........29
五、测试样例
…………………………………………………………………………………… 30
六、总结
……….....…………………………………………………………………………… 35
计算机科学
-
2
-
一、整体框架:
二、语法分析:
1、语法
Program ::= <声明串>
<声明串> ::=<声明>{<声明>}
<声明> ::=int <ID> <声明类型> | void <ID> <函数声明>
<声明类型>::=<变量声明> | <函数声明>
<变量声明> ::= ;
<函数声明> ::=’ (‘<形参>’) ‘<语句块>
输入文本
程序入口
语法分析
词法分析
中间代码
汇编代码
错误报告
计算机科学
-
3
-
<形参>::= <参数列表> | void
<参数列表> ::= <参数> {, <参数>}
<参数> ::= int <ID>
<语句块> ::= ‘{‘<内部声明> <语句串>’}’
<内部声明> ::= 空 | <内部变量声明>{<内部变量声明>}
<内部变量声明>::=int <ID> <变量声明>
<语句串> ::= <语句>{ <语句> }
<语句> ::= <if 语句> |< while 语句> | <return 语句> | <赋值语句>
<赋值语句> ::= <ID> =<表达式>;
<return 语句> ::= return [ <表达式> ] (注:[ ]中的项表示可选)
<while 语句> ::= while ‘( ‘<表达式> ‘)’ <语句块>
<if 语句> ::= if ‘(‘<表达式>’)’ <语句块> [ else <语句块> ](注:[ ]中的项表示可选)
<表达式>::=<加法表达式>{ relop <加法表达式> } (注:relop-> <|<=|>|>=|==|!=)
<加法表达式> ::= <项> {+ <项> | -<项>}
<项> ::= <因子> {* <因子> | /<因子>}
<因子> ::=num | ‘(‘<表达式>’)’ |<ID> FTYPE
FTYPE ::= <call> | 空
<call> ::=’(’<实参列表> ’) ’
<实参> ::=<实参列表> | 空
<实参列表> ::= <表达式>{, <表达式>}
<ID>::=字母(字母|d 数字)*
2、支持语句与数据类型
if 语句:
while 语句:
支持的语句与运算:
if 语句
表达式
语句
语句
while
语句
表达式
语句
计算机科学
-
4
-
1)
数据类型:
int
,
void
2)
语句:赋值(
=
),
if, while
,
return=
3)
数学运算:
+
,-,
*
,
/
4)
关系运算:
= =
,
>
,
<
,
>=
,
<=
,
!=
6)
支持函数的定义、调用
7)
注释语句:
C
类型的
/* */
和
C++
类型的
//
3、数据结构
class yfq
{
private:
int end_flag; //
程序结束标志
int read_main; //
是否已经读过
main
函数
int num_zdkh; //
左大括号的数目,用于判断变量是否为全局变量
int return_flag;
char return_words[100];
char c; //c = fin.get()
,临时读入变量
char bl_name[100]; //
临时记录变量名
(
以
'\0'
结束
)
char hs_name[100]; //
临时记录函数名(以
'\0'
结束)
int len_hs; //
从函数名至
')'
的长度
int available_T; //Ti,i=available_T
,为当前可用的
i
int available_L; //Li,i=available_L
char var_name[10][100]; //
记录参数名
int kh[100]; //
记录读到的右括号
int len_kh; //
char headwords[100]; //
句首字符
int is_hs_head; //
是否函数居于句首标志(判断是否需要
return
)
int is_hs_dy; //
是否函数定义
int len_hs; //
函数信息表的长度
int break_hs; //
在函数名数组中搜索给定函数名时断开的数
hs_info hs[500]; //
函数信息表数组
int len_global_bl; //
全局变量长度
bl_info global_bl[500]; //
全局变量名数组
int len_local_bl; //
局部变量长度
bl_info local_bl[500]; //
局部变量名数组
ifstream fin;
ifstream fin1; //
ofstream fout1; //
输出中间代码
计算机科学
-
5
-
ofstream fout2; //
输出汇编代码
public:
yfq();
~yfq();
bool zs_handle(); //
判断是否为有效注释
&&
去
除注释
//bool u_handle(char u[], int
len_u,int mode); //
因子处理函数
//bool s_handle(char c[], int len_c);
//
加法表达式处理函数
bool exist_bl(char name[], int mode); //
判断变量名是否存在
, mode = 1:
局部变量
mode = 0:
全局变量
bool exist_hs(char name[], int var_num); //
判断函数名是否存在
&&
参数
数目是否正确
void insert_bl(char name[], int mode);
//
将定义的变量插入
global_bl[] / local_bl[]
//mode 0->
全局变量
1->
局部变量
void insert_hs(char name[], int var_num);
//
将定义的函数插入
hs[]
,
var_num
:参数
void delete_bl();
//
读到
'}'
删除该区间读到的变量,
'{'
开始(并生成中间代码)
bool right_num(char c[], int len_c); //
判断是否为合法数字
int fh_rank(char fh); //
计算符号等级
bool r_handle(char c[], int len_c, int mode); //
表达式处理函数,
mode:
0-> = r; 1-> if( r ) 2-> while( r )
bool bl_handle(); //
句首为变量的处理函数
bool void_handle(); //
句首为
void
的处理函数
bool int_handle(); //
句首为
int
的处理函数
int get_kind(char c[], int len_c); //
合法变量名,合法数字,
void error_rep(); //
报错及相关处理函数
int readhead(); //
读句首
void analyze();
};
struct hs_info //
记录函数的数据结构
{
char hs_name[20];
int f_return;
char w_return[20];
int var_num;
剩余27页未读,继续阅读
优游的鱼
- 粉丝: 74
- 资源: 316
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0