毕业作品网站

 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>计算机毕业设计 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopinvvp QQ:1015083682   

JSJWL Scheme解释程序的实现

文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

目  录

论文总页数:24页

1 引言 1

1.1 课题背景 1

1.2 研究意义 1

1.3 研究方法 1

2 Scheme语言 2

2.1 发展历史与现状 2

2.2 Scheme语言介绍 2

2.3 Scheme的特点 3

3 相关理论基础 3

4 解释程序的整体结构 3

4.1 词法分析器 4

4.2 类型系统 4

4.3 循环求值器 4

4.4 虚拟的寄存器机器 5

4.5 内存管理与垃圾回收 5

5 解释程序的实现 6

5.1 类型系统 6

5.2 词法分析 7

5.3 表达式求值的环境模型 7

5.3.1 环境模型 7

5.3.2 环境操作 9

5.3.3过程应用的环境模型 9

5.3.4 环境模型的实现 10

5.4 尾递归 11

5.5 虚拟的寄存器机器 13

5.5.1 寄存器 14

5.5.2 存储模型 15

5.5.3 基本表操作的实现 16

5.5.4 停止并复制垃圾回收算法 17

5.5.5 虚拟的寄存器机器的实现 18

5.6 表达式求值过程 18

6 测试结果 19

6.1 测试尾递归 19

6.2 测试正确性与效率 20

结    论 21

参考文献 22

致    谢 23

声    明 24

结    论

解释程序已经实现了基本的Scheme语言特征,并可以运行普通的Scheme程序。并且也实现了一些调试方法,如显示寄存器中的对象、某内存段中的对象等等,用来调试解释程序本身。通过实现该解释程序,我对Scheme语言以及C++和其它编程语言有了更深入的了解,对解释器和编译器的相关知识有了一定的理解和体会,通过学习SICP[3]我也对程序设计思想和本质有了比较深刻的认识,同时在程序编写过程中也锻炼了我的代码编写能力和代码管理能力。

在开发过程中也碰到过不少问题和困难。一个问题是在对Scheme表达式求值过程中发现错误而抛出异常后,栈中还有残留的内容,此时会将其清空,但是这里的内容是寄存器中的值,要能继续正确的对Scheme表达式求值,就需要将这些内容恢复到寄存器中。对这个问题设计了一个很好的解决办法,就是在每一次入栈操作中都记录入栈信息,在出栈时删除相应的入栈信息,在发生异常后,就可以根据这些入栈信息将栈中的内容恢复到原来的寄存器中,以便还原状态。

另外,在最初的设计中,是没有对过程调用的参数个数进行检查的,但后来发现在其它解释器中都有对参数个数的检查,如果参数不匹配会报错。于是在后期基本内置操作实现的基础上,加入了对参数个数的检查。由于内置操作是通过模板偏特化来实现的,因此定义了另一个模板类,并使用其偏特化来定义参数个数限制,并定义了一个模板函数来进行相应操作的参数检查。这样的设计利用了模板的特性,很好的与原有系统整合到了一起。

但该解释器的实现也是有很多不足的,比如程序执行效率低、整体设计结构不太合理等等,这说明仍然是有很大的改进空间的。在以后将整个解释器结构重新设计,以运行效率为主要目的,根据即将推出的R6RS标准文档来实现,开发出一个具体实用价值的Scheme解释程序。

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopinvvp QQ:1015083682     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
基于MatlabSimulink … 35kV输电线路继电保护的设计 … 分布式风电场低电压穿越故障建模与 …
大学生内容分享和社交平台的设计与 … 基于SSM框架的企业人事薪酬管理 … 基于大模型的代码注释自动生成与维 …
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopinvvp QQ:1015083682  
本站毕业设计和毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!