没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
12页
有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: α→β1β2…βm (θδ1δ2…δn)→θδnθδn-1…θδ1θ 在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,用下述两条具体规则和上述规则形式(2)实现,把他的话解释成人能听得懂的话。 B→tAdA A→sae 设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。测试用例见题集p97。
资源详情
资源评论
资源推荐
课程设计任务书
学生姓名: 吕强 专业班级: 计算机
0604
班
指导教师: 伍新华 工作单位: 计算机学院科学系
题 目: 魔王语言解释的程序设计
初始条件:
有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听得懂,但他
的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的
语言逐步抽象上去的:
(1) α→β
1
β
2
…β
m
(2) (θδ
1
δ
2
…δ
n
)→θδ
n
θδ
n-1
…θδ
1
θ
在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,用下述两条
具体规则和上述规则形式(2)实现,把他的话解释成人能听得懂的话。
(1) B→tAdA
(2) A→sae
设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用
大写字母或小写字母代换的变量。魔王语言可含人的词汇。测试用例见题集 p97。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写
等具体要求)
课程设计报告按学校规定格式用 A4 纸打印(书写),并应包含如下内容:
1、 问题描述
简述题目要解决的问题是什么。
2、 设计
存储结构设计、主要算法设计(用类 C 语言或用框图描述)、测试用例设计;
3、 调试报告
调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。
4、 经验和体会(包括对算法改进的设想)
5、 附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行
结果要包含这些测试数据和运行输出,
6、 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为 0 分。
时间安排:
1、第 20 周(7 月 7 日至 7 月 11 日)完成。
2、7 月 11 日 8:00 到计算机学院实验中心(三楼)检查程序、交课程设计报告 、
源程序(CD 盘)。
指导教师签名: 2008 年 7 月 日
1
系主任(或责任教师)签名: 2008 年 7 月 日
1 设计题目
魔王语言解释的程序设计
2 问题描述
有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听
得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下
两种形式的规则由人的语言逐步抽象上去的:
(1)α→β
1
β
2
…β
m
(2)(θδ
1
δ
2
…δ
n
)→θδ
n
θδ
n-1
…θδ
1
θ
在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,
用下述两条具体规则和上述规则形式(2)实现,把他的话解释成人能听得懂
的话。
(1)B→tAdA
(2)A→sae
设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示
可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。
3 设计
3.1 数据结构设计
ADT Stack{
数据对象:D={ai∈ElemSet,i=1,2,...n, n≥0}
数据关系:R1={<ai-1,ai>, ai-1,ai∈Di=1,2,...n}
InitStack(struct Stack &s) 操作结果:构造空栈
ClearStack(struct Stack &s) 初始条件:栈 S 存在 操作结果:清为空栈
2
InStack(char* ch,struct Stack &s) 把字符组从右至左压入栈中
Pop(struct Stack &s,char &e) 初始条件:栈 S 存在 操作结果:删除栈顶,用 e 返回
Push(struct Stack &s,char e) 初始条件:栈 S 存在 操作结果:插入 e 作为新栈顶
StackEmpty(struct Stack s) 判断栈是否为空
ADT Queue{
数据对象:D={ai ai∈ElemSet,i=1,2,...n, n≥0}
数据关系:R1={<ai-1,ai> ,ai-1,ai∈D,i=1,2,...n}
InitQueue(struct LinkQueue &q) 操作结果:构造一个空队列
DeQueue(struct LinkQueue &q,char &e) 初始条件:Q 为非空队列 操作结果:删除队
头,用 e 返回
EnQueue(struct LinkQueue &q,char e) 初始条件: 队列 Q 存在 操作结果:插入 e 作
新队尾
QueueEmpty(struct LinkQueue q) 判断队列是否为空
3.2 主要算法设计
InitStack(struct Stack &s){//构造栈 S
s.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}//InitStack
Push(struct Stack &s,char e){//向栈中压入元素,插入 e 作为栈顶元素
if(s.top-s.base>=STACK_INIT_SIZE){
s.base=(char*)realloc(s.base,(s.stacksize+STACK_INCREMENT)*sizeof(char));
s.top=s.base+s.stacksize;
s.stacksize+=STACK_INCREMENT;}
*(s.top)=e;
s.top++;
}//Push
InitQueue(struct LinkQueue &q){//构造队 q
q.front=q.rear=(struct Queue*)malloc(sizeof(struct Queue));
q.front->next=NULL;
}//InitQueue
EnQueue(struct LinkQueue &q,char e){//元素入队,插入 e 作为 q 的新的队尾元素
struct Queue* p;
p=(struct Queue*)malloc(sizeof(struct Queue));
p->data=e;
p->next=NULL;
3
剩余11页未读,继续阅读
metooso0611
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5