实验指导 step5:局部变量和赋值

这一步我们终于要增加变量了,包括:

  • 变量的声明
  • 变量的使用(读取/赋值)

此外,我们的 main 函数内部可以包含多条语句和声明了。

为了增加变量,我们需要确定:变量存放在哪里、如何访问变量。我们将借此引入 栈帧 的概念,并介绍它的布局。

语法上,step5 的改动如下:


function : type Identifier '(' ')' '{' statement* '}'
statement : 'return' expression ';'
| expression? ';' | declaration declaration : type Identifier ('=' expression)? ';' expression : assignment assignment : logical_or | Identifier '=' expression
primary : Integer | '(' expression ')'
| Identifier

我们要增加和变量相关的语义检查:变量不能重复声明,不能使用未声明的变量。

请将你的作业放置在分支stage-2下,你可以通过git checkout -b stage-2创建一个新的分支并继承当前分支的修改。

我们只接受 pdf 格式的实验报告,你需要将报告放在仓库的 ./reports/<branch-name>.pdf,比如 stage 2 的实验报告需要放在 stage-2 这个 branch 下的 ./reports/stage-2.pdf。注意报告的标题是 stage-2 而不是 step-5

你需要:

  1. 改进你的编译器,支持本节引入的新特性,通过相关测试。
  2. 完成实验报告(具体要求请看实验指导书的首页)。实验报告中需要包括:
    • 你的学号姓名
    • 简要叙述,为了完成这个 stage 你做了哪些工作(即你的实验内容)
    • 指导书上的思考题
    • 如果你复用借鉴了参考代码或其他资源,请明确写出你借鉴了哪些内容。并且,即使你声明了代码借鉴,你也需要自己独立认真完成实验。
    • 如有代码交给其他同学参考,也必须在报告中声明,告知给哪些同学拷贝过代码(包括可能通过间接渠道传播给其他同学)。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""