Schython:项目 4 概述
项目 4 总览:两人一组,用 Scheme 实现一个名为 Schython 的 Python 解释器子集。
Schython
在第 11 课中,你已经了解了如何实现一个 Scheme 解释器(mceval.scm)。在这个项目中,你将帮我们构建一个名为 Schython 的 Python 解释器(Scheme + Python = Schython)。
在解释器中输入以下命令,获取项目所需的文件和说明文档:
cp -r ~cs61as/lib/schython/ .
你可以把 . 替换成任何你想保存项目的目录。
项目文件
下面是 schython/ 目录中各文件的说明:
| 文件名 | 用途 |
|---|---|
1. schython.text | Schython 项目的说明文档。 |
2. start.scm | 用于加载测试代码所需文件的加载程序。确保它与其他 Schython 文件位于同一目录。 |
3. obj.scm | 我们的面向对象系统代码。该系统用于在 parser.scm 中创建和操作 line-object 类。请勿修改此文件。 |
4. parser.scm | Schython 解释器的解析器。该文件把输入行分解为 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 官方文档,更全面地了解这门语言。