编译原理 期末复习笔记整理(上)

资料借鉴:

【编译原理】期末复习 零基础自学_哔哩哔哩_bilibili

编译原理笔记

第一章 引论

1.编译原理逻辑过程:

词法分析        语法分析        语义分析        中间代码生成        编译代码生成

2.词法分析

任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。

依循的原则:构词规则

描述工具:正规式和有限自动机 FOR  I   :=     1   TO    100   DO

                                             保留字 标识符 等符  整常数 保留字 整常数  保留字

例如:

基本字(保留字:组成命令的关键字,系统定义好的单词):void,int,float 标识符 (用户定义的函数名、变量名等):jisuan,a,b,c,d,x,y 整常数:50 运算符:*, +, = 界限符(分隔开两部分的符号):{  } ;,( )

需要注意的是:

词法分析依照此法规则,识别正确的单词,并将其转换成统一规格(类号、内码),备用。 转换规则包括:对基本字、运算符、界限符的转换规则(有限的、可数的),对标识符的转换规则,对常数的转换规则等。

3.符号串:

符号串集合:

(注意空集和空串不同,空集是连空串都没有的集合)

4.闭包与正闭包:

和符号串的方幂不同,符号串的方幂运算是将自己重复n次,而∑的方幂运算属于多个符号串的乘积运算。

5.文法和语言:

(上下文无关文法          左部:非终结符         右部:出非终结符外还有终结符)

6.推导与约归

关键在于x中是否包含终结符和非终结符,句子属于句型的一种

对标识符的定义是用文法来表示的

7.递归规则

第二章 高级语言及其语法描述

1.常用的高级语言  

FORTRAN    数值计算  

COBOL        事务处理  

PASCAL    结构程序设计  

ADA        大型程序、嵌入式实时系统

PROLOG    逻辑程序设计  

ALGOL        算法语言  

C/C++        系统程序设计  

Java        Internet程序设计

与机器语言或汇编语言比较,高级语言的优点: 较接近于数学语言和工程语言,比较直观、自然和易于理解; 便于验证其正确性,易于改错; 编写效率高; 易于移植.

2.语法

词法规则单词符号的形成规则。 单词符号是语言中具有独立意义的最基本结构。一般包括:常数、标识符、基本字、算符、界符等。 描述工具:有限自动机

语法规则语法单位的形成规则。 规定了如何从单词符号形成语法单位; 语法单位通常包括:表达式、语句、分程序、过程、函数、程序等; 描述工具:上下文无关文法

3.语义

对于语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法符号的意义。离开了语义的语言只是一堆符号的集合。各种语言中有形式上完全相同的语法单位,含义却不相同。 语义:对某种语言,定义一组规则,用它可以定义一个程序的意义,称为语义规则。

4.语法分析树:

语法树又叫做推导树

语法树每一个节点都是终结符或者非终结符

树根是语法开始符号

有分支的节点的一定是非终结符;反之不一定成立

最左推导:每次替换都是从最左边的非终结符进行替换

最右推导(规范推导):

 

最左推导和最右推导画出来的语法树是相同的

5.规范句型(右句型):规范推导过程中出现的举行

6.二义性:

7.句型的分析:

句型的分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程

可分为两大类,自顶向下和自底向上

        所谓自顶向下分析法,是从文法的开始符号出发,反复使用各种产生式,寻找“匹配”于输人符号串的推导。自底向上的方法则是从输人符号串开始,逐步进行“归约”,直至归约到文法的开始符号。
        从语法树建立的方式可以很好理解这两类方法的区别。自顶向下方法是从文法符号开始,将它作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串;自底向上方法则是从输人符号串开始,以它作为语法树的末端结点符号串,自底向上地构造语法树。

自底向上=>短语、简单短语、句柄:

子树末端结点符号串是相对于子树根的短语

简单子树的末端结点构成的符号串是相对于简单子树的短语(简单短语又叫做直接短语)

最左简单子树的末端节点组成的符号串是句柄

第三章 正规式和有穷自动机

1.正规式:

正规式和正规文法本质上是等价的

2.五元组

确定了有穷自动集之后,等于号后面最多有一个状态

终态一定要写成一个集合

3.有穷自动机

不确定的有穷自动机确定化:

第四章 First和Follow集与LL(1)文法

LL(1)文法:自顶向下请求

(一般做题时,小括号中的内容都是满足的)

可以对非LL(1)文法进行等价变换,但不一定都能变成LL(1)文法

直接消除左递归等于将左递归变成了右递归

递归下降分析技术:

表驱动分析技术:

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

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

相关文章

解决 fatal: Not a git repository (or any of the parent directories): .git 问题

解决方法:在命令行 输入 git init 然后回车就好了

全面解析Java.lang.ClassCastException异常

全面解析Java.lang.ClassCastException异常 全面解析Java.lang.ClassCastException异常:解决方案与最佳实践 🚀📚摘要引言1. 什么是Java.lang.ClassCastException?代码示例 2. 报错原因2.1 类型不兼容2.2 泛型类型擦除2.3 接口和实…

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务,我们会定义: //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男,0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…

使用稀疏约束水平集算法对MR图像中的脑肿瘤进行分割| 文献速递-深度学习肿瘤自动分割

Title 题目 Brain tumor segmentation in MR images using a sparse constrained level set algorithm 使用稀疏约束水平集算法对MR图像中的脑肿瘤进行分割" 01 文献速递介绍 脑磁共振(MR)成像是成像患者脑结构的主要方法,从MR图像…

最后7天,高考翻盘秘籍等你开启!

高考,这场关乎未来的考试,对于每一个学生来说都是一次严峻的挑战。随着倒计时的进行,无数考生和家长的焦虑和期待达到了顶点。在这个最后7天的关键时期,我们为即将参加高考的学生及其家长提供一份复习秘籍,帮助你们抓住…

rfid资产管理系统如何帮助医院管理耗材的

RFID资产管理系统可以帮助医院管理耗材,提高耗材管理的效率和准确性。以下是它可以发挥作用的几个方面: 1. 实时跟踪和定位:使用RFID标签附加在耗材上,可以实时跟踪和定位耗材的位置。医院可以通过系统查询耗材的实时位置&#xf…

微服务八股-分布式事务-注册中心-服务保护

一、分布式事务 1.CAP和BASE 三者不能同时存在。 CP:由于网络分片的存在,如果要保证强一致性就不能写,此时不满足可用性 AP:由于网络分片的存在,如果要保证可用性,能读也能写,就不能保证强一致…

【讲解下Web前端三大主流的框架】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

Java项目:基于SSM框架实现的学生就业管理系统分前后台(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的学生就业管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

pytorch文本分类(四)模型框架(模型训练与验证)

关卡四 模型训练与验证 本文是在原本闯关训练的基础上总结得来,加入了自己的理解以及疑问解答(by GPT4) 原任务链接 目录 关卡四 模型训练与验证1. 训练1.1 构建模型结构1.2 模型编译1.3 模型训练1.4模型超参数调试 2. 推理2.1 模型准确性…

束测后台实操文档1-PVE、PBS

合肥先进光源束测系统后台基础架构初步设计报告 合肥先进光源束测系统后台搭建进展2024.4.29 关于后台基础架构,写了上面两篇文档,只是框架的印象,没涉及到具体的实操,后面针对具体的搭建慢慢的完善操作的细节,从今年…

基于STM32实现智能园艺系统

目录 引言环境准备智能园艺系统基础代码示例:实现智能园艺系统 土壤湿度传感器数据读取水泵控制温湿度传感器数据读取显示系统用户输入和设置应用场景:智能农业与家庭园艺问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统…

四川省税务局CDH国产化替代实践

“传统数据仓库对于数据处理时效较低,且无法处理实时增量数据及数据变更,同时,在面对海量税务数据大规模进行查询分析等方面存在一些挑战。我们希望尽快寻找到一款能够替代CDH,并且具备灵活扩展能力的大数据解决方案,以…

有限元法之有限元空间的构造

目录 一、区域Ω的剖分 二、三角形一次元 三、一次元的基函数与面积坐标 四、三角形二次元及其基函数 前两节我们介绍了有限元基本概念和变分理论的推导,本节我们继续探讨有限元空间的构造。 一、区域Ω的剖分 对矩形区域进行三角剖分,其中x方向剖…

类 和 对象(二)

构造方法 接上篇,若每次都想下面的setDate方法给对象初始化,未免比较麻烦,那有什么方法可以让初始化更加简便呢? public void setDate(int year, int month, int day){this.year year;this.month month;this.day day;}答&#…

文献分享《Microbiome and cancer》

人类微生物群构成了一个复杂的多王国群落,与宿主在多个身体部位共生相互作用。宿主-微生物群的相互作用影响多 种生理过程和各种多因素的疾病条件。在过去的十年中,微生物群落被认为会影响多种癌症类型的发展、进展、转移 形成和治疗反应。虽然微生物对癌…

2024年短视频评论区批量爬取采集软件

一、背景说明 前言 评论区引流,顾名思义,是通过在视频下方进行留言评论、回复评论,吸引用户的注意,从而和你的账号产生互动、交易。比如,在一个关于健身的视频下方,留言分享自己的健身经验或者提出问题。…

使用 SwanLab 进行可视化 MNIST 手写体识别训练

使用 SwanLab 进行可视化 MNIST 手写体识别训练 在线演示demo 本案例主要: 使用pytorch进行CNN(卷积神经网络)的构建、模型训练与评估使用swanlab跟踪超参数、记录指标和可视化监控整个训练周期 一、相关简介 SwanLab SwanLab是一款开源…

Linux中ftp配置

一、ftp协议 1、端口 ftp默认使用20、21端口 20端口用于建立数据连接 21端口用于建立控制连接 2、ftp数据连接模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接 二、ftp安装 yum install -y vsftpd #---下…

使用httpx异步获取高校招生信息:一步到位的代理配置教程

概述 随着2024年中国高考的临近,考生和家长对高校招生信息的需求日益增加。了解各高校的专业、课程设置和录取标准对于高考志愿填报至关重要。通过爬虫技术,可以高效地从各高校官网获取这些关键信息。然而,面对大量的请求和反爬机制的挑战&a…