HNU_编译原理_笔记(2021级)

本文概述了编译原理课程的学习内容,包括词法分析、语法分析、语法制导翻译等核心概念,强调了教材选择、网课资源以及实验和考试的常规性。作者认为这门课学习难度和考试相对较低,对实验和作业的完成策略进行了分享。
摘要由CSDN通过智能技术生成

链接:编译原理-笔记
提取码:0928 

0.前言

        计科大三上的四门核心课里(计网、算法、数据库、编译原理),编译原理的学习内容算比较少的了——词法分析、语法分析、语法制导翻译、语义分析、代码生成、中间表示、代码优化(比较重要的就是下划线的)。       

          期中和期末的题都比较常规(除了有的语法制导翻译让写语义动作,个人感觉有点凭感觉),题型也比较固定,尤其老师给划重点就很得劲。总的来说,个人认为这门课是四门课里学习难度、考试难度都比较低的。

​​​​​​​

        总评90,期中、期末都不知道扣在哪里,尤其期末有的同学给的分好像非常低5/6/70+,就很奇怪,另外我们期中的试卷是跟期末一起改的,可能有什么别的用意。复查的难度和风险也比较大。

0-1 教材:

        《编译原理》(第2版) [Compilers:Principle,Techniques and Tools]

        个人感觉书真的看不过来;不过有几个部分,还是有必要看下的:

  • 语法分析:计算FIRST,FOLLOW集合;(P140-141)
  • 语法制导翻译:注释语法分析树,依赖图;

0-2 网课:

        B站中科大的华保健老师的视频:【编译原理_中科大(华保健)】

        我们教学班是宋勃升老师,另外一个教学班是全哲老师。课上基本就是按中科大的这个讲的,老师的pp跟中科大的差不多,加了一些代码截图。网课看这个视频就够了。

0-3 评价回顾:

        宋勃升老师:个人感觉老师人还不错(背后议论,好在不算是坏话)。上课基本每次都点名,不过笔者大多是在课上看b站的视频,偶尔听下课(虽然感觉有点不尊重老师,但感觉即使是b站那个老师讲线下课,我估计也是更愿意在线上听)。

        比较特殊的就是,上课回答问题可以加分(正确算一次,上限五次),可在期末考试那个成绩占比部分加(上限五分,总分不超过100)。

0-4 关于实验-16%:

        编译原理共4次实验(10/11/12/14周,第一次离期中考试近,几个班跟老师一说就推迟了)。

        实验代码基本全抄的CSDN上A橙和韩金轮的文章,感觉不是一般人能写出来,私以为教学计划没打算让我们自己写出来。

        学渣抱怨之后,窃以为实验起码得复现出来结果,当然最好是正确结果。然后毕竟得要跟助教验收,弄懂实验在干什么、各个函数在干什么(不必弄懂所有语句)还是有必要的,这对于知识点的理解也是有一定帮助(虽然帮助不算大)。能做到以上,个人以为已经不输大部分人了,而且也算达到了实验的目的。(当然,功底较强者,可视之为学渣捞分之术)。

        关于实验提前验收:有自己学习计划安排的同学,比如离考试时间较近、不想一起验收排队,就可以找助教提前验收(助教有时间且愿意的话)。笔者提前验过两次,感觉还不错;笔者一个同学提前验收,据其说助教印象还不错,每次打分都不低。

0-5 小班-5%:

        笔者教学班是每个小组(6-7人)讲45分钟,一般每个人就讲一次。一般拉不开差距,也比较简单,可以水。

0-6 作业-16%:

        一共四次作业,占比16%还是挺高的。

        词法分析、语法分析、语法制导翻译的部分题还是很有多看几遍的必要的,不过有些概念题抄一下就得了。dragon-book-exercise-answers

0-7 关于考试:

      期中和期末的题都比较常规(除了有的语法制导翻译让写语义动作,个人感觉有点凭感觉),题型也比较固定,尤其老师给划重点就很得劲。总的来说,个人认为这门课是四门课里学习难度、考试难度都比较低的。

  • 期中-23%
    • 考前两章:词法分析、语法分析,感觉题型都比较固定,就NFA转DFA再最小化,还有LL1文法,LR1文法。
    • 而且还是开卷(虽然感觉开卷没什么用),往年考试试卷可在课程中心找到(编译原理的课程中心还是比较完整的)。
  • 期末-40%
    • 我们画的重点是:
      • 词法分析NFA->DFA->最小化;
      • 语法分析给文法,构建ll1分析表;给字符串,是否符合ll1文法;                                     给字符串判断是否符合LL1文法:感觉是用栈,从初始状态开始,前看给的字符串的一个符号,然后根据LL1分析表判断用那条产生式,然后把产生式的右部压栈,能匹配前看符号就继续前看,匹配不了就不符合(我们考的应该是不符合)。
      • 语法分析:语法制导翻译:设计语义动作(分值不高)
        • 给语义规则求语义动作,比较简单,如下例:
        • 比较复杂的:要写产生式和语义动作(笔者考的是:给三进制字符串,能转成十进制数,给出产生式和语义动作),有点像下例:
      • 代码优化给控制流图,对其活性分析,画寄存器的分配方案(分值高);比较常规;
      • 给基本块、活性变量,构造控制流图:复习的时候,也没弄懂这是什么意思。不过最后也不是考这个,就是考的代码优化(给一段代码,能不能常数折叠、公共子表达式、强度弱化),不过也不知道强度弱化是什么。

1.编译器介绍

2.词法分析

3.语法分析

4.语法制导翻译

5.语义分析

6.代码生成

7.中间表示

8.代码优化

  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值