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/

结语

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

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

真的帮助很大。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python使用pyinstaller 快速打包成一个exe程序方案

使用PyInstaller是一种将Python脚本打包成独立可执行文件&#xff08;.exe&#xff09;的方便方法。 以下是一个简单的步骤&#xff0c;以及相关的说明和代码示例&#xff1a; 1.安装PyInstaller: pip install pyinstaller2.在终端中导航到你的Python脚本所在的目录: cd pat…

day32_CSS

今日内容 0 复习昨日 1 css属性 2 盒子模型 【重点】 3 css扩展属性 4 Bootstrap【重点】 0 复习昨日 1 表格标签 table表格里面有tr , (行)行内有单元格,td行合并,rowspan列合并,colspan 2 写出input标签type属性的值 文本框 text 密码框 password 单选框 radio 复选框 checkb…

在线教育系统开发:构建现代化学习平台

随着科技的迅速发展&#xff0c;在线教育系统在教育领域扮演着越来越重要的角色。本文将深入探讨在线教育系统的开发过程&#xff0c;涉及关键技术和代码实现。 技术选型 在开始开发之前&#xff0c;我们首先需要选择适合在线教育系统的技术栈。以下是一些常见的技术选项&am…

使用宝塔面板部署Nuxt3项目到云服务器上

1、前期准备 1&#xff09;准备一台云服务器2&#xff09; 在云服务器上安装宝塔面板软件应用&#xff0c;安装步骤可参考博客:使用宝塔面板部署Node.jsMysql服务和Vue3-Admin项目到云服务器上 2、进行Nuxt3项目的部署 1)、本地执行打包命令&#xff0c;输出以下两个文件目录…

Android系统开发之TimeZoneDetectorService浅析--上

一&#xff1a;问题描述&#xff1a; 客户有一个关闭通话功能的需求&#xff0c;根据MTK的配置方法关闭了大概8个宏开关后&#xff0c;实现通话功能&#xff0c;但是导致插好sim卡开机后&#xff0c;时间和时区不能更新的问题。 二&#xff1a;问题分析&#xff1a; (1).MTK…

AF700 NHS 酯,AF 700 Succinimidyl Ester,一种明亮且具有光稳定性的近红外染料

AF700 NHS 酯&#xff0c;AF 700 Succinimidyl Ester&#xff0c;一种明亮且具有光稳定性的近红外染料&#xff0c;AF700-NHS-酯&#xff0c;具有水溶性和 pH 值不敏感性 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;AF700 NHS 酯&#xff0c;AF 700 Succinimid…

深度视觉目标跟踪进展综述-论文笔记

中科大学报上的一篇综述&#xff0c;总结得很详细&#xff0c;整理了相关笔记。 1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) &#xff0c;在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法&#xff0c;采用的框架包括相关滤波器、分类…

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机 人眼相当于三维场景下的相机&#xff0c; VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕、图像等。 相机位置&#xff1a;即相机所在的位置&#xff0c;用方法vtkCamera::SetPosition()设置。 相…

力扣hot100 腐烂的橘子 BFS 矢量数组 满注释版

Problem: 994. 腐烂的橘子 文章目录 思路复杂度&#x1f49d; Code 思路 &#x1f468;‍&#x1f3eb; 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) &#x1f49d; Code class Solution {int[] dx new int[] { 0, 1, 0, -1 };// 行 矢…

如何快速搭建实用的爬虫管理平台

目录 一、前言 二、选择合适的爬虫框架 三、搭建数据库 步骤1 步骤2 步骤3 四、搭建Web服务器 步骤1 步骤2 步骤3 步骤4 五、管理爬虫 六、总结 一、前言 爬虫是互联网数据采集的关键工具&#xff0c;但是随着数据量的增加和需求的多样化&#xff0c;手动运行和管…

SpringMVC-HttpMessageConverter 报文信息转化器

文章目录 HttpMessageConverter一、概念二、RequestBody三、RequestEntity四、 ResponseBody1.返回JSON格式的字符串 五、RestController六、ResponseEntity HttpMessageConverter 一、概念 报文信息转化器&#xff0c;将请求报文转化为Java对象&#xff0c;或将Java对象转化…

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid&#xff0c;但是传递方式与后端接收方式不匹配&#xff0c;导致没接收到更大的可能是因为后端请求方式错了。比如&#xff1a; 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…

动态库和静态库的理解 Linux

其实库文件里面的内容就是函数的实现方法&#xff0c;向我们包含的头文件其实就是函数的生命&#xff0c;而我们编译链接程序时会自动加载库文件&#xff0c;最终形成可执行程序。其实我们在编译链接时不仅仅会将文件的库文件加载进来&#xff0c;其实头文件也是需要加载进来的…

C++输入输出流

输入/输出流类&#xff1a;iostream---------i input&#xff08;输入&#xff09; o output&#xff08;输出&#xff09; stream&#xff1a;流 iostream&#xff1a; istream类&#xff1a;输入流类-------------cin&#xff1a;输入流类的对象 ostre…

企业级大数据安全架构(六)数据授权和审计管理

作者&#xff1a;楼高 本节详细介绍企业级大数据架构中的第六部分&#xff0c;数据授权和审计管理 1.Ranger简介 Apache Ranger是一款被设计成全面掌管Hadoop生态系统的数据安全管理框架&#xff0c;为Hadoop生态系统众多组件提供一个统一的数据授权和管理界面&#xff0c; 管…

品牌突围|内容营销「共创公式」全面讲解

为什么品牌要扎根小红书&#xff1f;除了种草投放&#xff0c;品牌还能做些什么&#xff1f; 在小红书&#xff0c;迎接消费者共创的时代&#xff0c;激活品牌营销的无限潜能。 拥抱多元 在新机遇中预见未来 2023年&#xff0c;各大社交媒体平台涌现出了许多热点&#xff0c…

软件测试工作中需要使用的工具

作为一个测试人员在日常工作中会使用到很多的工具&#xff0c;今天给大家分享一下这些工具。对软件测试、接口、自动化、性能测试和日常文档编写办公有帮助的网站。 接口测试大力推荐国产的接口测试工具&#xff1a;apipost&#xff0c;apipost还是一款很不错的接口文档生产工…

OpenCV图像的基本操作

图像的基本操作&#xff08;Python&#xff09; 素材图 P1&#xff1a;die.jpg P2&#xff1a;cool.jpg V&#xff1a;rabbit.mp4&#xff0c; 下载地址 读取展示-图像 import cv2img_1 cv2.imread(./die.jpg) # default cv2.IMREAD_COLOR print("die.jpg shape(imre…

Python 实现自动化测试 dubbo 协议接口

前言 在工作或学习过程中&#xff0c;可能会遇到后端服务里有使用 dubbo 协议实现的接口&#xff0c;dubbo 协议接口的测试方法不同于 http/https 类型的接口&#xff0c;不能简单使用request.post的方法来完成自动化测试。 如果需要对 dubbo 协议的接口进行自动化测试&#…