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

资料借鉴:

【编译原理】期末复习 零基础自学_哔哩哔哩_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)文法

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

递归下降分析技术:

表驱动分析技术:

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

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

相关文章

SpringBootWeb 篇-深入了解 Mybatis 删除、新增、更新、查询的基础操作与 SQL 预编译解决 SQL 注入问题

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Mybatis 的基础操作 2.0 基础操作 - 环境准备 3.0 基础操作 - 删除操作 3.1 SQL 预编译 3.2 SQL 预编译的优势 3.3 参数占位符 4.0 基础操作 - 新增 4.1 主键返回…

不拍视频,不直播怎么在视频号卖货赚钱?开一个它就好了!

大家好,我是电商糖果 视频号这两年看着抖音卖货的热度越来越高,也想挤进电商圈。 于是它模仿抖音推出了自己的电商平台——视频号小店。 只要商家入驻视频号小店,就可以在视频号售卖商品。 具体怎么操作呢,需要拍视频&#xf…

Windows下mingw32编译ffmpeg5.1.4实现rtsp拉流

由于客户要求,要在Windows下使用mingw32编译,去ffmpeg.org下载需要编译的版本,使用msys2方法进行编译,使用QT5.10的编译器,基本上把网上的方法试了个遍,编译全部库总是报错出问题 查看了ffbuild文件夹中con…

JSP期末要点复习

一、JSP工作原理 1.客户端请求JSP页面:用户通过浏览器发送一个请求到服务器,请求一个特定的JSP页面。这个请求被服务器上的Web容器(如Apache Tomcat)接收。 2.JSP转换为Servlet:当JSP页面第一次被请求时&#xff0…

魅族应用市场驳回 安装包包含32位库,请处理32位库后再重新提交

问题出现 解决方法 打开HBuilerX找到项目的mainfest.json 取消cpu类型中armeabi-v7a的勾选。 armeabi-v7a 第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。 arm64-v8a 第8代、64位ARM处理器(ARM64位&#x…

用《让子弹飞》的话说,网易希望自己2024年又高又硬

5月23日港股盘后,网易披露了2024年第一季度的财务报告。报告期内,公司总营收达到268.52亿人民币,同比增长7.21%。归母净利润表现强劲,达76.34亿人民币,同比增长13.02%。 结合行业大环境背景来看,尽管去年Q…

Elasticsearch之入门与安装

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来…

六西格玛培训公司:企业成长的“超级导师”——张驰咨询

六西格玛培训公司在企业中扮演着至关重要的角色,其作用主要体现在以下几个方面: 提升企业管理能力: 六西格玛管理将数据和事实作为驱动力,帮助企业将管理从理论转化为实际行动。 通过实施六西格玛管理,企业能够显著…

学习Java的日子 Day49 函数,DOM

Day48 1.流程控制语句 if else for for-in(遍历数组时,跟Java是否一样) While do while break 语句用于跳出循环 continue 用于跳过循环中的一个迭代 2.函数 2.1 JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function funct…

信息系统项目管理师0133:工具与技术(8项目整合管理—8.8实施整体变更控制—8.8.2工具与技术)

点击查看专栏目录 文章目录 8.8.2 工具与技术8.8.2 工具与技术 专家判断实施整体变更控制过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组的意见,涉及领域包括:关于项目所在的行业以及项目关注的领域的技术知识;法律法规;法规与采购;配置管理;风险管…

HTTP 协议的基本格式和Fidder的简单使用

HTTP协议诞生于1996(开玩笑哈,诞生于1991年),http协议用于网页和手机app和服务器交互的场景。通过HTTP协议,客户端(例如网页浏览器或手机应用)可以向服务器发送请求,服务器则会响应这…

简单微信企业群消息推送接口

群管理 群发送接口 POST: JSONURL http://localhost:65029/m/wxapi/sendwxmsg{ "nr":"试", --消息 "at":"wxid_y0k4dv0xcav622,wxid_y0k4dv0xcav622",--群wxid "key":"F98F354F1671A2D21BC78C76B95E96EB",--群k…

振弦采集仪在岩土工程监测中的精度与可靠性评估

振弦采集仪在岩土工程监测中的精度与可靠性评估 河北稳控科技振弦采集仪是一种常用的岩土工程土体力学参数监测仪器,它主要用于测量岩土中的应力、应变和模量等力学参数。在岩土工程中,土体力学参数的精确测量对于工程设计、施工和监测都非常重要。因此…

python-编写函数判断一个三位数是否为水仙花数。

【问题描述】要求编写函数isflower(n)判断一个三位数n是否为水仙花数,如果是,则返回True,否则返回False。在主程序中要求调用该函数并输出三位数中所有的水仙花数。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十一)- 微服务(1)

微服务 1.认识微服务 SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下: 2. 服务拆分 需求 : 把订单信息和用户信息一起返回 从订单模块向用户模块发起远程调用 , 把查到的结果一起返回 步骤 &…

类和对象03

六、继承 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少重复代码 6.1 继承的基础语法 例如我们看到很多网站中, 都有公共的头部,公共的底…

【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?

一、多通道卷积神经网络示例 还是以图像处理为例,如果你的目标不仅是分析灰度图像特性,还打算捕捉RGB彩色图像的特征。如下图,当面对一张66像素的彩色图像时,提及的“3”实际上是指红、绿、蓝三种颜色通道,形象地说&am…

C++ 头文件优化

C 是一种灵活的语言,所以需要一种积极的方法来分析和减少编译时依赖。一种常见的达到这个目的的方法是,将依赖从头文件里转移到源代码文件里。实现这个目的的方法叫做提前声明。 简而言之,这些声明告诉编译器某个函数接受和返回哪些参数&…

(排序) 快速排序经典应用之快速选择

文章目录 ⭐快速排序🚩实现思路🚩快排模板 ⭐快速选择🚩场景🚩例题介绍 [lc1738. 找出第 K 大的异或坐标值]🚩实现 ⭐std::nth_element🚩核心作用🚩参数要求🚩未定义条件 End 各种排…

有个小伙把 MyBatis 替换成 MyBatis-Plus,上线后就被开了!!

MyBatis-Plus 替换 MyBatis 首先,我们准备了一张名为 tbl_order 的表,并初始化了其中的两条数据。 DROP TABLE IF EXISTS tbl_order; CREATE TABLE tbl_order (id bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自增主键,order_no varchar(50)…