Schython:项目 4 概述

项目 4 总览:两人一组,用 Scheme 实现一个名为 Schython 的 Python 解释器子集。

Schython

在第 11 课中,你已经了解了如何实现一个 Scheme 解释器(mceval.scm)。在这个项目中,你将帮我们构建一个名为 Schython 的 Python 解释器(Scheme + Python = Schython)。

在解释器中输入以下命令,获取项目所需的文件和说明文档:

cp -r ~cs61as/lib/schython/ .

你可以把 . 替换成任何你想保存项目的目录。

项目文件

下面是 schython/ 目录中各文件的说明:

文件名用途
1. schython.textSchython 项目的说明文档。
2. start.scm用于加载测试代码所需文件的加载程序。确保它与其他 Schython 文件位于同一目录。
3. obj.scm我们的面向对象系统代码。该系统用于在 parser.scm 中创建和操作 line-object 类。请勿修改此文件。
4. parser.scmSchython 解释器的解析器。该文件把输入行分解为 Scheme 解释器可识别的 Python 字符。你需要编辑此文件。
5. py-meta.scm该文件负责求值 parser.scm 解析后的 Python 代码。你需要编辑此文件。
6. py-primitives.scm该文件包含 Python 数据类型的所有 Scheme 表示。你需要编辑此文件。
7. primitives.py包含一系列 Python 函数的文件。请勿修改此文件。
8. memoize.py用于完成第 9 题答案的文件。你需要编辑此文件。
9. tests一个目录,包含一些可以用来测试代码的测试。它们取自 schython.text 中的例子。如何运行这些测试,见该目录下的 README 文件。你的成绩将取决于你通过了多少测试用例。

要加载项目,在解释器中输入以下命令:

(load "start.scm")

评分方式

每位搭档完成九道题。其中五道(第 1、2、6、8、9 题)由两位搭档共同完成;其余(第 3、4、5、7 题)应各自独立完成。

各小组提交一份完成的项目,每道题一个答案。共同完成的题目两位搭档得分相同,独立完成的题目得分各自计算。

项目中有若干处(在 schython.text 中标出)需要搭档合并他们的工作,这是进入项目下一部分的必要条件。

如果你找不到搭档,或者希望独自完成,请与助教沟通。

关于 Python 的更多信息

Python 是一门现代且非常流行的语言,被广泛用于计算机科学入门课程,也是 CS 61A 课程使用的语言。我们将在说明文档中讲解编写 Schython 解释器所需的 Python 语言基础。不过,如果你感兴趣(本项目完全不要求),可以查看 Python 官方文档,更全面地了解这门语言。