CS143 斯坦福编译原理 实验环境准备

本文已收录于 CS143斯坦福编译原理课程实验 系列,共计 1 篇,本篇是第 1 篇

本文已收录到:CS143斯坦福编译原理课程实验 专题
  • CS143 斯坦福编译原理 实验环境准备

视频讲述

官方课程资源下载

2021版的课程主页(含文本作业、编程作业、PPT等信息):http://web.stanford.edu/class/cs143/

备用:因为官方的课程主页每年都会更新,有时候会时常上不上去,这里我将上述网站进行了镜像,以备不时之需。

下载压缩包后解压缩,点击index.html文件即可查看镜像的课程主页。

CS143课程主页

实验环境安装 – 虚拟机方式

课程实验虚拟机镜像文件/说明文档等下载:

https://courses.edx.org/courses/course-v1:StanfordOnline+SOE.YCSCS1+2T2020/7b74698308574f3c89d2ed498f26a019/

Ps:虚拟机镜像文件是分享在box.com上面的,直接访问无法打开,应该是被DNS污染了,请自行修改本地host文件解决。

备用:这里我也将上述网站进行了镜像。edx

备用:实验用虚拟机镜像文件:

链接:https://pan.baidu.com/s/12YEvFiLGo0D-etatrcrjpQ?pwd=aaaa
提取码:aaaa

虚拟机提供的帐户是“compilers”,密码是“cool”

制作共享文件夹

  • 转到 VirtualBox 主屏幕并单击设置图标

VirtualBox 主页的图像,其中设置按钮以红色圈出

  • 转到共享文件夹菜单,然后单击“添加”按钮

VirtualBox 设置窗格的图像,其中“共享文件夹”选项卡和“添加新文件夹”黄油以红色圈出

  • 选择您希望共享文件夹在主机系统上的路径
  • 勾选自动挂载

添加新共享文件夹的对话框的图像

  • 点击确定

VirtualBox 设置菜单的图像,其中“确定”按钮以红色圈出

使用共享文件夹

在本节中,我们将您的共享文件夹的名称称为 <FolderName>。例如,在上面的示例中,<FolderName> 指的是 tmp。Ps:这里的 <FolderName> 说的是本地物理机电脑新建的那个文件的文件名。

  • 自动挂载的文件夹位于/media/sf_<FolderName>
  • 如果您没有勾选自动挂载,您可以使用以下内容挂载共享文件夹:
$ sudo mkdir -p /media/sf_<FolderName>
$ sudo mount -t vboxsf -o rw,gid=vboxsf <FolderName> /media/sf_<FolderName>
  • 要使共享文件夹可编辑,您需要运行以下命令并重新启动虚拟机。Ps:下面的 compilers 是虚拟机账户名。
$ sudo usermod -a -G vboxsf compilers
  • 现在,写入共享文件夹的任何文件都将出现在您的虚拟机和主机中。为了便于访问,您可以使用以下命令从共享文件夹创建一个符号链接到 ~/cool:
$ ln -s /media/sf_<FolderName> /home/compilers/cool/<FolderName>

实验环境安装 – 手动配置

上述虚拟机方式安装的操作系统是一种叫做 Bodhi Linux 的操作系统,它本身基于流行的 linux 发行版 Ubuntu。我们使用 Bodhi Linux 是为了使下载大小更易于管理,因为完整的 Ubuntu 安装非常大。但是,由于它是基于 Ubuntu 的,因此大多数 Ubuntu 软件包也可以安装在 Bodhi Linux 上。——但笔者试过了,这个操作系统安装个git都费劲,版本太低了,update指定也失效了,换源也不行。

所以你可以尝试下手动安装实验环境,建议用最新的Ubuntu操作系统。

下载课程实验基础代码框架

EDX平台提供了一个压缩包下载链接wget这个链接,解压到目录/usr/class下。这是官方配置方式。

Ps:如果链接失效,可以本站下载:asset-v1_StanfordOnline+SOE.YCSCS1+1T2020+type@asset+block@student-dist.tar

下载实验软件

之后的PA需要使用两个工具flex, bison,你可能已经注意到了,它们需要我们额外安装。当然,如果你使用了官方虚拟机,就不用自己安装,也不用担心以下要说的问题。

课程使用的flex版本较老,没有考虑到C++C轻微不兼容问题。或者说,新版本flex默认你的代码是与时俱进的。不论如何,为了使用课程提供的代码,我们不得不使用更老的flex版本。写在这里提醒你,是因为你的Linux包管理工具默认安装最新版本2.6+,而你可能对一些错误迷惑不已。

官方虚拟机使用的是2.5.35,所以我们最好也这么做。我从这里下载到的压缩包,解压之后:

./configure && make && sudo make install

还不清楚bison是否有版本要求,之后发现这方面问题再写上来。

Ps:如果链接失效,可以本站下载:flex-2.5.35

HelloWorld

class Main inherits IO {
   main(): SELF_TYPE {
	out_string("Hello, World.\n")
   };
};

在VSCode中编写Cool代码,使用实验环境中的 coolc 文件名.cl 命令编译成 .s MIPS汇编文件再使用spim汇编器运行。

友情提示,VSCode中已经有Cool语言的扩展了,安装后可以实现代码提示。

参考文献:https://zhuanlan.zhihu.com/p/226190284

作者: 高志远

高志远,23岁,男生,毕业于上海杉达学院电子商务系。

《CS143 斯坦福编译原理 实验环境准备》有4条评论

    1. 如果有编译原理知识可以不全看配套视频,但这个编译器的语言挺具体实现的,名字叫做cool语言,还是需要看几节视频了解下语法规则,视频B站有。

发表评论

邮箱地址不会被公开。