From 875043b0501cf827ccf5090e49e64ae1a6424fc9 Mon Sep 17 00:00:00 2001 From: stivenkingsberg Date: Fri, 22 Dec 2023 17:01:06 +0800 Subject: [PATCH] add report --- report/report.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/report/report.md b/report/report.md index 5300493..4412285 100644 --- a/report/report.md +++ b/report/report.md @@ -29,10 +29,31 @@ PB21000117 陈应豪 ## 实验设计 +- 在task1的时候,学习SysYF的语法,并编写等效的ll文件 + +- 在task2的时候,学习能够生成SysYF的IR文法,使之能生成等效的ll文件 + +- 在task3的时候,利用实验框架,通过类比上一关的IR认罚的编写,利用已经生成的AST树为不同的模块编写对应的IR语法 + - 参考助教给出的代码框架,我们把实验分成了变量定义、初始化和赋值;函数和算数调用和求值两个部分进行分工 + ## 实验难点及解决方案 +- 全局变量在初始化时,如果用到其他全局变量进行赋初值,无法使用builder->create_load() + +- 获取全局数组中元素的值比较麻烦 + + - 因此。如果scope.in_global(),那不论访问什么变量,我们都传值(因为赋初值在初始化中完成了,和lval中的传值不冲突。同时,在没有进入任何bb的情况下赋值语句是不能出现的) + + + ## 实验总结 +利用PW5学到的AST以及访问者模式,我们编写了能够生成IR的实验框架,对AST和IR的理解更加深刻 + ## 实验反馈 +配置文件不够齐全 + ## 组间交流 + +我们一起预约研讨室线下写代码