HNU-编译原理-甘晴void学习感悟

前言

熬过煎熬的考试周、复习以及更加煎熬的等成绩,查到成绩的那一刻,心里还是挺开心的。

虽然我没有完全学懂这门课程,但我还是兢兢业业地通过了课程的考试,拿到了这门课程的认可。

记录一下自己对编译原理的学习感悟,算是给这学期编译原理的学习一个总结,也可以给后来者一点帮助。

编译原理我的卷面不错,期中和期末都是9X分,总评也挺好看,属于是少见的平时成绩将总评向下拉的学科。

总领

编译原理这门课程十分困难,湖南大学课程组对于编译原理的课程教学仅仅局限在一个很小的部分,如

  • 词法分析部分(RE,NFA,DFA,min-DFA等),
  • 语法分析部分(LL1,LR0,LR1,SLR,LALR等,我们老师还讲了算符优先文法,但考试没有考察),
  • 中间代码生成部分(主要在实验中涉及到,老师上课讲过DAG图,依赖图等,但没有深入涉及,也没做复杂考察),
  • 代码优化部分(活性分析,到达分析,寄存器分配等)

由于我对编译这一块不是很感兴趣,所以没有深入去了解,仅仅是抱着“通过考试,拿到成绩,有别的用处”这样的想法去学习,备考的,故我接下来仅仅从应试这个角度分析一下如何取得较好的成绩。

我们班组对于成绩的给定如下:

作业(16%) + 实验(16%) + 小班讨论(5%) + 期中考试(23%) + 期末考试(40%)

因此我主要分平时、作业、实验、小班讨论、考试,这5个方面做总结。

<0> 平时

推荐网课

中科大 华保健教授:

编译原理 华保健 高清课程_哔哩哔哩_bilibili编译原理 华保健 高清课程共计127条视频,包括:1.1 编译器概述、1.2 编译器结构、1.3 编译器实例等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1m7411d7iS/中南大学 徐德智教授:

编译原理 中南大学 徐德智教授_哔哩哔哩_bilibili编译原理 中南大学 徐德智教授共计42条视频,包括:课时1:形式语言与文法描述、课时2:词法分析:正规式与自动机(DFA,NFA)、课时3:词法分析:Thompson算法,子集构造算法,Hopcroft算法等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1oV411e7Fj/词法分析部分,这个up主小姐姐讲的非常好:

致爱意的个人空间-致爱意个人主页-哔哩哔哩视频哔哩哔哩致爱意的个人空间,提供致爱意分享的视频、音频、文章、动态、收藏等内容,关注致爱意账号,第一时间了解UP主动态。icon-default.png?t=N7T8https://space.bilibili.com/514480242

<1> 作业

对于专业课的作业,我还是跟之前的态度一样:先自己独立完成一遍,然后找同学对答案,找到自己不会的部分,务必搞懂。最后上交的时候确保平时成绩。

由于我们使用的是龙书,龙书是上到现在为止,唯一一门我没有找到教材标准答案的课本,所以答案只能靠与同学讨论得到。网上流传的答案都不太可信,有缺漏的部分,也有错误的部分。

对于这门课程,我个人感觉作业是很有用的,务必自己认真完成。道理很简单,作业就是考试题型。作业答案我就不提供了,主要全是PDF,截图上传太烦了。

<2> 实验

我们实验用的是USTC中科大2020版的cminus-f,简单来说就是动手自己写出一个类c编译器,但这个编译器完成的功能小一点,然后这个类c的语法也比c要简单一些。

实验使用gitee上交(git也要学一下,这是学计算机必须掌握的),

我开放了我的gitee仓库,有需要的同学可以参考着看看。

资源位置:https://gitee.com/wolfvoid17/cminus_compiler-2023-fall

cminus_compiler-2023-fall: 编译原理课程实验报告甘晴void-计科210X-202108010XXXicon-default.png?t=N7T8https://gitee.com/wolfvoid17/cminus_compiler-2023-fall我的4次实验报告如下,欢迎参考:

HNU-编译原理-实验1-利用FLEX构造C-Minus-f词法分析器-CSDN博客

HNU-编译原理-实验2-Bison-CSDN博客

HNU-编译原理-实验3-LLVM IR与LightIR-CSDN博客

HNU-编译原理-实验4-cminus-f语言(由AST生成IR)-CSDN博客

实验采取gitee提交留档 + 助教线下验收的形式。

验收要能给助教表达清楚自己对于实验的理解,如果能现场演示具体的案例更好。

<3> 小班讨论

自选题目,基本上就是复现上课的内容,对于应试也是有帮助,这些基本都是需要掌握的。

讨论课助教参与并打分,面向班级同学。给合适的例子,把知识讲懂就可以了。

我们组的两次讨论课PPT如下:

HNU-编译原理-讨论课1-CSDN博客

HNU-编译原理-讨论课2-CSDN博客

<4> 考试

考试应该是应试环节最为重要的一个部分。

期中考试是开卷考试,就不说了。其实这个学科没有开卷的必要,因为不可能直接抄到答案的。开卷和闭卷没啥差别,又不让讨论。没什么好说的。

这次期末由于有4们核心课而且在第17周就直接考试,所以我的复习时间很少。我大概花了2天时间在编译原理的复习上。主要是元旦看了一下代码优化和语法制导翻译(其实没咋看懂),然后在数据库考完之后,最后一门是编译原理的情况下,看了一整天的编译原理(考完数据库之后打了一下午英雄联盟,然后晚上去综合楼自习,第二天学了一整天编译原理)。感觉时间应该差不多。

总结为一句话,编译原理很难,但是编译原理的考试不难。

我在复习的时候参考的资料有:

我们班组老师的PPT,隔壁班组老师的PPT(因为几个班组用的同一套试卷),

【PPT我就不放了,毕竟是老师的劳动成果,直接放不太好】

基本上跟中科大华老师的这个很像

编译原理 华保健 高清课程_哔哩哔哩_bilibili编译原理 华保健 高清课程共计127条视频,包括:1.1 编译器概述、1.2 编译器结构、1.3 编译器实例等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1m7411d7iS/

可找到的历年期末考试卷(这个很难找到,所以很珍贵,下面或是我找到的,或是我自己做的,能收集到的资料)。

编译原理期末复习_(1)语义规则: → { a.i=n.val } 下面是我自己做的,或者是我回忆的2023年的原题。

HNU-编译原理-期末复习(刷题)-CSDN博客

编译原理-2022期末考试解析-CSDN博客

湖南大学-编译原理-2023期末考试【原题】-CSDN博客

总共就这5个模块:

  • 词法分析
  • 语法分析
  • 语法制导翻译
  • 中间代码
  • 优化

复习完一个模块就做相应的练习题,练会就好了。

对于语法分析部分(LL1,LR0,LR1,SLR,LALR等),B站的这个up小姐姐讲的很清晰,推荐看看。

致爱意的个人空间-致爱意个人主页-哔哩哔哩视频哔哩哔哩致爱意的个人空间,提供致爱意分享的视频、音频、文章、动态、收藏等内容,关注致爱意账号,第一时间了解UP主动态。icon-default.png?t=N7T8https://space.bilibili.com/514480242

对于数值分析和到达分析部分,中南大学的许德智教授讲的很好,可以看看。

编译原理 中南大学 徐德智教授_哔哩哔哩_bilibili编译原理 中南大学 徐德智教授共计42条视频,包括:课时1:形式语言与文法描述、课时2:词法分析:正规式与自动机(DFA,NFA)、课时3:词法分析:Thompson算法,子集构造算法,Hopcroft算法等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1oV411e7Fj/

如果有想对应试更加深入理解的同学,推荐看这个武汉大学的学长做的,面向它们试卷难度的讲解。可见武汉大学的考察难度确实比湖南大学要大。这个看看题目和思路就好,湖南大学的考察一般达不到这个深度的。

【武汉大学】编译原理混子速成——面向期末试卷复习:全集_哔哩哔哩_bilibili【武汉大学】编译原理混子速成——面向期末试卷复习:全集共计9条视频,包括:1 简介、2 NFA转DFA和DFA化简、3 求firsrt集follow集和LL(1)分析表等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1SB4y1S7Sc/

结语

还是要感谢我们的全教授的授课与解惑,

全教授的讲课风格偏向理性化,没有过多强调代码,会比较清晰地展现每一步骤与实现,

真的帮助很大。

最后祝大家都能得到自己满意的成绩+知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android App开发-简单控件(4)——按钮触控和图像显示

3.4 按钮触控 本节介绍了按钮控件的常见用法&#xff0c;包括&#xff1a;如何设置大小写属性与点击属性&#xff0c;如何响应按钮的点击事件和长按事件&#xff0c;如何禁用按钮又该如何启用按钮&#xff0c;等等。 3.4.1 按钮控件Button 除了文本视图之外&#xff0c;按钮…

在autodl训练yolov8时卡在下载字体

1.问题 在autodl训练yolov8到这一步之后会卡住很久 2. 解决办法 Ctric中断后发现是下载Arial字体卡住了&#xff0c;这个字体需要从外网中下载 先手动从链接中下载https://ultralytics.com/assets/Arial.ttf &#xff0c;然后上传到autodl。然后将这个文件移动到/root/.config/…

vusui css 使用,简单明了 适合后端人员 已解决

vusui-cssopen in new window 免除开发者繁复的手写 CSS 样式&#xff0c;让 WEB 前端开发更简单、灵活、便捷&#xff01;如果喜欢就点个 ★Staropen in new window 吧。 移动设备优先&#xff1a; vusui-css 包含了贯穿于整个库的移动设备优先的样式。浏览器支持&#xff1a…

数据结构.单链表

1.单链表&#xff08;有头结点&#xff0c;无头节点&#xff09; 2.插入 不带头结点的处理起来会麻烦一些。 3.删除 4.查找 5.建立链表 6.头插法可以用来实现链表的逆置 代码&#xff1a; #include<iostream> using namespace std; const int N 10; typedef struct LNod…

【鸿蒙】大模型对话应用(二):对话界面设计与实现

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 对话页…

【UE5】如何给人物骨骼绑定Control Rig用来制作动画(控制)

本篇文章暂时只教绑定人物手部的Control Rig&#xff0c;脚的Control Rig举一反三即可 1&#xff0c;右键-创建-控制绑定 2在控制绑定中-右键创建基本IK 3&#xff0c;填入上臂-下臂-手 4【手和下臂】右键-新建-Add Controls For Selected&#xff0c;&#xff08;或者新建-…

【C++】std::variant

上一篇文章讲到了 union&#xff0c;union union存在很多问题&#xff0c;因此C17设计了一个新的variant替代原来的union。 union的问题 无法知道当前使用的类型是什么。而且union无法自动调用底层数据成员的析构函数。 这些使得一般只对一些“基本类型”使用union&#xf…

springboot通过ftl模板动态生成图片字体异常加载字体文件

针对上篇文章springboot通过ftl模板动态生成图片&#xff08;html生成图片imgBase64&#xff09;有不少小伙伴问生成的图片字体异常&#xff0c;或者本地正常服务器异常&#xff0c;我这里有一个优化&#xff0c;给字体文件放在项目中自己加载即可 响应的调整&#xff1a; POM…

2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…

【RT-DETR有效改进】反向残差块网络EMO | 一种轻量级的CNN架构(轻量化网络,参数量下降约700W)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

MongoDB:从容器使用到 Mongosh、Python/Node.js 数据操作

文章目录 1. 容器与应用之间的关系介绍2. 使用 Docker 容器安装 MongoDB3. Mongosh 操作3.1 Mongosh 连接到 MongoDB3.2 基础操作与 CRUD 4. Python 操作 MongoDB5. Nodejs 操作 MongoDB参考文献 1. 容器与应用之间的关系介绍 MongoDB 的安装有时候并不是那么容易的&#xff0…

如何在有或没有备份的 iPhone 上检索已删除的短信

iPhone 清理垃圾短信时不小心删除了一些重要短信&#xff1f;想知道如何找回 iPhone 上已删除的短信吗&#xff1f;如果您已将设备备份到 iCloud 或 iTunes&#xff0c;则可以从备份恢复 iPhone 上的短信。如果没有备份&#xff0c;您可以尝试第三方iPhone短信恢复程序来恢复它…