【期末复习】编译原理

news2024/12/12 2:25:53

1. 语法描述

1.1. 上下文无关文法

1.2. 句子 & 句型 & 语言

    1. 推导出来的都是句型
    2. 但是如果句型中只含有终结符,那就是句子
    3. 所有的句子合起来,才是语言

1.3. 文法

文法就是推导的式子。

1.4. 文法二义性

1.5. 文法二义性证明——根据最左 \ 最右推导有两种

1.6. 语言二义性

如果文法没有二义性,也可能使得语言是二义性的。

1.7. 二义性的性质

二义性文法可以转化为无二义性的文法。

1.8. 上下文无关文法的限制

1.9. 文法的类型

2. 词法分析

2.1. DFA

S0 只能是一个(元素)

F 可以有很多(集合)

2.2. NFA

2.3. DFA 和 NFA 区别

2.4. NFA 转换为 DFA

2.4.1. 先对 NFA 转换,用以下规则

2.4.2. 构造状态转换矩阵

2.4.3. 转换为数字

I 这一列从上到下依次排序,然后对应转换后两列的值。

2.4.4. 化简

2.5. 正规式和正规集的转换

3. 语法分析——自上而下

3.1. 消除左递归

  1. 竖线后面的写前来,后面跟一个 A'
  2. 剩下的写前来,后面跟一个 A',加竖线和空串

3.2. 构造非终结符的 FIRST 集合

3.2.1. 步骤

  1. 找出所有的非终结符,遍历所有的文法,直到规则不发生变化为止
  2. 如果是符号,就将其加入到 FIRST(左边的非终结符)
  3. 如果不是符号,就将“->”右边的非终结符的 FIRST 有的元素,加入到右边的非终结符的 FIRST 集合中

3.3. 构造非终结符的 FOLLOW 集合

3.3.1. 步骤

后面如果是一个非终结符,最终能够推出来的是‘空’,那么就是第三种情况。

3.3.2. 例题

3.4. 分析表构建

是根据 FIRST 和 FOLLOW 集进行构造。

  1. 如果 FIRST 中没有空,直接在 FIRST 里的元素上写上产生式
  2. 如果 FIRST 中有空,要在 FOLLOW 集里的元素写上产生空的产生式

3.5. LL(1)的意义

4. 语法分析——自下而上

4.1. 概念

4.1.1. 短语

  • 短语:任意一颗子树中,如果根结点经过若干步才推导出了叶子结点,则这些叶子结点组成的序列就是相对于这棵子树的短语

4.1.2. 直接短语

  • 直接短语:属于短语,只不过不能经过若干步的推导了,必须一步就能推导出来叶子结点来,这些叶子结点组成的序列才是相对于这颗子树的直接短语

4.1.3. 句柄

直接短语中的最左直接短语为该句型的句柄

4.1.4. 素短语

素短语,是指至少含有一个终结符的短语,并且除自身外,不包含更小的素短语。

4.1.5. 最左素短语

最左素短语是句型中最左边的素短语。

4.1.6. 例子

4.2. 规范规约&最右推导

4.3. 算符优先级规则

  1. 后出现的优先级高。
  2. 两条原则:
    1. 设终结符 a 在非终结符 A 的前面,那么 a <· 所有 A 的 firstVT
    2. 设非终结符 A 在终结符 a 的前面,那么 A 的 lastVT ·> a

VT 就是 VT 就是终结符的意思。

4.4. LR 分析

4.4.1. LR 分析器

4.4.2. LR(0)分析器

4.4.3. LR(0)分析表的构造

拓广文法如果没有 S',那么就需要写上 S'->S。

4.4.4. ACTION 和 GOTO 表构造造

  1. action 就是 VT,goto 就是 VN。
  2. ACTION 写的是 rj 或者 sj, GOTO 写的是序号(表示下一步到达哪个状态)。
    1. 初始的项目集规范族 在哪,acc 就在哪
    2. 其余的只有规约项目的,都填 rj
    3. 其余的,都填 sj

4.5. LR(1)分析表

4.5.1. 构造

另一个例子

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

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

相关文章

AI绘画设计实战-Day2

Stable Diffusion 提示词前缀 FF,(masterpiece:1.2),best quality,highres,extremely detailed CG,perfect lighting,8k wallpaper,anime,comic,game CG, FF&#xff0c;&#xff08;杰作&#xff1a;1.2&#xff09;&#xff0c;最高质量&#xff0c;高分辨率&#xff0c;极其…

python数据分析之爬虫基础:requests详解

1、requests基本使用 1.1、requests介绍 requests是python中一个常用于发送HTTP请求的第三方库&#xff0c;它极大地简化了web服务交互的过程。它是唯一的一个非转基因的python HTTP库&#xff0c;人类可以安全享用。 1.2、requests库的安装 pip install -i https://pypi.tu…

鸿雁电器发力,能否抢占康养卫浴新蓝海?

经济下行&#xff0c;叠加房地产行业的调整以及数智化浪潮的强劲推动&#xff0c;建材行业正面临着前所未有的变革与机遇。为了更好地把握行业趋势&#xff0c;求新求变&#xff0c;12月9日&#xff0c;鸿雁电器在青山湖园区鸿雁物联网大厦17楼鸿鹄厅成功举办了第四届“智创变革…

Scratch教学作品 | 3D飞行模拟器——体验飞行的无限乐趣! ✈️

今天为大家推荐一款令人惊叹的Scratch作品——《3D飞行模拟器》&#xff01;由BamBozzle制作&#xff0c;这款游戏完全用Scratch构建&#xff0c;带你体验开放世界飞行的自由与乐趣。从起飞到降落&#xff0c;每一步都需要你的精准操作&#xff01;更棒的是&#xff0c;这款游戏…

Linux服务器运维管理面板之1panel

华子目录 安装1panel使用卸载浏览器登录 安装 网站&#xff1a;https://community.fit2cloud.com/#/products/1panel/downloads 解压 [rootdocker-node1 ~]# tar -zxf 1panel-v1.10.13-lts-linux-amd64.tar.gz[rootdocker-node1 ~]# cd 1panel-v1.10.13-lts-linux-amd64/ [ro…

SpringBoot【二】yaml、properties两配置文件介绍及使用

一、前言 续上一篇咱们已经搭建好了一个springboot框架雏形。但是很多初学的小伙伴私信bug菌说&#xff0c;在开发项目中&#xff0c;为啥.yaml的配置文件也能配置&#xff0c;SpringBoot 是提供了两种2 种全局的配置文件嘛&#xff0c;这两种配置有何区别&#xff0c;能否给大…

学习笔记063——通过使用 aspose-words 将 Word 转 PDF 时,遇到的字体改变以及乱码问题

文章目录 1、问题描述&#xff1a;2、解决方法&#xff1a; 1、问题描述&#xff1a; Java项目中&#xff0c;有个需要将word转pdf的需求。本人通过使用aspose-words来转换的。在Windows中&#xff0c;转换是完全正常的。但是当部署到服务器时&#xff0c;会出现转换生成的pdf…

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包&#xff0c;官网地址:Redis下载 网盘链接&#xff1a; 通过网盘分享的文件&#xff1a;redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…

帝可得-运营管理App

运营管理App Android模拟器 本项目的App客户端部分已经由前端团队进行开发完成&#xff0c;并且以apk的方式提供出来&#xff0c;供我们测试使用&#xff0c;如果要运行apk&#xff0c;需要先安装安卓的模拟器。 可以选择国内的安卓模拟器产品&#xff0c;比如&#xff1a;网…

用 Python 从零开始创建神经网络(十六):二元 Logistic 回归

二元 Logistic 回归 引言1. Sigmoid 激活函数2. Sigmoid 函数导数3. Sigmoid 函数代码4. 二元交叉熵损失&#xff08;Binary Cross-Entropy Loss&#xff09;5. 二元交叉熵损失导数&#xff08;Binary Cross-Entropy Loss Derivative&#xff09;6. 二进制交叉熵代码&#xff0…

高质量阅读微信小程序ssm+论文源码调试讲解

第2章 开发环境与技术 高质量阅读微信小程序的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对高质量阅读微信小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&…

AI 学习框架:开启智能未来的钥匙

一、热门人工智能学习框架概述 人工智能学习框架在当今的科技发展中占据着至关重要的地位&#xff0c;它为开发者提供了强大的工具&#xff0c;有力地推动了人工智能的发展&#xff0c;同时也极大地降低了开发的难度。 人工智能学习框架是帮助开发者和研究人员快速构建、训练…

go-blueprint create exit status 1

1. 异常信息 2024/12/06 10:59:19 Could not initialize go.mod in new project exit status 1 2024/12/06 10:59:19 Problem creating files for project. exit status 1 Error: exit status 12. 排查思路 手动进行go mod init查看手动的报错解决报错 3. 解决问题 发现是GO11…

Python利用海龟画图turtle库做一个篮球比赛计时画面

Python利用海龟画图turtle库做一个篮球比赛计时画面&#xff0c;代码如下 import turtle import time import random r random.random() g random.random() b random.random() turtle.speed(0) for j in range(1,2,1):for i in range(1,60,1):print(i)time.sleep(0.1)turtl…

若依集成更好用的easyexcel

背景 若依使用的是apach poi并在此基础上进行封装apach poi的原生的api是很复杂的&#xff0c;若依简化了了此操作apach poi的上传速率和下载速率都是没有优化的&#xff0c;依赖于文件大小的限制在此前提下&#xff0c;如果没法满足客户的需求&#xff08;超大型文件的上传&am…

代码随想录算法训练营day51|动态规划part13

回文子串 回文子串这里的递推式不太一样&#xff0c;dp[i] 和 dp[i-1] &#xff0c;dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现&#xff0c;判断一个子字符串&#xff08;字符串下标范围[i,j]&#xff09;是否回文&#xff0c;依赖于&#xff0c;子字符串…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代&#xff0c;如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS&#xff08;Simple Realtime Server&#xff09;作为一款开源的流媒体服务器&#xff0c;以其卓越的性能和灵活的功能&#xff0c;…

VRRP的知识点总结及实验

1、VRRP VRRP(Virtual Router Redundancy Protocol&#xff0c;虚拟路由器冗余协议)既能够实现网关的备份&#xff0c;又能解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 2、VRRP技术概述&#xff1a; 通过把几台路由设备联合组成一台虚拟的“路由设备”…

【设计模式系列】状态模式(二十三)

一、什么是状态模式 状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;其核心目的是管理一个对象在其内部状态改变时的行为变化&#xff0c;其核心理念是将对象的行为和状态分离。这种模式通过将每个状态相关的行为封装在独立的类中&#xff0c;使…

使用 LlamaFactory 结合开源大语言模型实现文本分类:从数据集构建到 LoRA 微调与推理评估

文章目录 背景介绍文本分类数据集Lora 微调模型部署与推理期待模型的输出结果 文本分类评估代码 背景介绍 本文将一步一步地&#xff0c;介绍如何使用llamafactory框架利用开源大语言模型完成文本分类的实验&#xff0c;以 LoRA微调 qwen/Qwen2.5-7B-Instruct 为例。 文本分类…