编译原理.龙书学习1
第一章:
编译器:将程序翻译成一种能够被计算机执行的形式
解释器:解释器直接利用用户提供的输入执行源程序中指定的操作

一个编译器的结构
编译器将源程序映射为语义上等价的目标程序,这个映射过程由两部分组成:分析部分和综合部分
如果一个语言使用的策略支持编译器静态决定某个问题,那么我们说这个语言使用了一个静态策略,或者说这个问题可以在编译时刻决定,另一方面,一个只允许在运行程序的时候做出决定的策略称为动态策略,或者被认为需要在运行时刻做出决定
环境是一个从名字到存储位置的映射,因为变量就是内存位置(即c语言中的术语“左值”)
状态就是从一个内存位置到他们的值的映射,以C语言的术语说,即状态把左值映射为他们的相应右值

第二章--一个简单的语法制导翻译器
一个程序语言的语法(syntax)描述了该语言的程序的正确形式
该语言的语义(semantics)则定义了程序的含义
一个编译器前端的模型

语法树

语法定义




语法分析
语法分析的任务是:接受一个终结符号串作为输入,找到 从文法的开始符号推到出这个串的方法。如果不能从文法的开始符号推导得到该终结符号串,则报告该终结符号串中包含语法错误
语法分析树


一个文法的语言的另一个定义是指任何能够由某棵语法分析树生成的符号串的集合。为一个给定的终结符号串构建一颗语法分析书的过程称为对该符号串进行语法分析
一个文法可能有多颗语法分析树能够生成一个给定的终结符号串,这样的文法称为二义性。我们需要为编译应用设计没有二义性的文法,或者在使用二义性文法时使用附加的规则来消除二义性
词法分析
编译器实现的五个阶段之一——词法分析。
- 词法分析的目标是将代码分割为词法单元,如关键字、变量名、运算符等。词法分析器将通过识别不同单元之间的分隔符来完成这一任务。
- 每个词法单元都有一个对应的类别,如标识符、关键字、运算符等。词法分析器将识别并分类这些子字符串,并将其传递给解析器。
- 解析器将以一系列的类别和子字符串的形式接收词法分析器的输出,这些类别和子字符串组成了所谓的"token"。
相关文章:
编译原理.龙书学习1
第一章: 编译器:将程序翻译成一种能够被计算机执行的形式 解释器:解释器直接利用用户提供的输入执行源程序中指定的操作 一个编译器的结构 编译器将源程序映射为语义上等价的目标程序,这个映射过程由两部分组成:分析…...
anaconda安装完成之后输入conda -V没有反应
anaconda安装完成后,conda没有反应 vim ~/.bashrc后面添加内容 # added by Anaconda3 5.3.0 installer # >>> conda init >>> # !! Contents within this block are managed by conda init !! __conda_setup"$(CONDA_REPORT_ERRORSfalse /u…...
netty报文解析之粘包半包问题
粘包问题 Netty 的粘包问题是指在网络传输过程中,由于 TCP 协议本身的特点,导致发送方发送的若干个小数据包被接收方合并成了一个大数据包。这种情况称为粘包。 TCP 协议是面向流的协议,没有数据边界,发送方发送的数据可能会被分…...
EasyCode整合mybatis-plus的配置
文章目录 entitymapper.javamapper.xmlserviceserviceImplcontroller 这篇文章不教你如何安装和使用EasyCode,只是贴出可以使用的配置。 具体EasyCode的使用可以查看其它的文章。 entity ##导入宏定义 $!{define.vm}##保存文件(宏定义) #sa…...
实施预测性维护解决方案的挑战及PreMaint的应对方法
前面我们介绍了企业选择预测性维护解决方案的常见问题和PreMaint的策略,本期我们将带来实施过程中可能会遇到的挑战,以及如何通过PreMaint来应对这些挑战,以实现可靠的预测性维护。 随着工业技术的不断进步,预测性维护作为一种先进…...
1. js中let、var、const定义变量区别与方式
1 声明语法 var upperA A; let upperB B; const upperC C; 只声明不初始化的结果,【 const定义的常量不可以修改,而且必须初始化】 // var 声明变量 var upperA; console.log(打印大写的A:%s, upperA); // 结果:打印大写的A&am…...
【STM32学习】I2C通信协议 | OLED屏
🐱作者:一只大喵咪1201 🐱专栏:《STM32学习》 🔥格言:你只管努力,剩下的交给时间! 今天需要将代码烧录到开发板中,本喵默认大家都会创建工程,以及进行基本的…...
Nvme Spec 第一章节学习
Nvme Express Base Specification 第一章 简介 1.1概述 NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。 此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCI Express接口。 注:在…...
第一章:最新版零基础学习 PYTHON 教程(第九节 - Python 语句中的 – 多行语句)
Python 中的语句: 在Python中,语句是Python解释器可以读取和执行的逻辑命令。它可能是Python 中的赋值语句或表达式。 Python 中的多行语句: 在Python中,语句通常写成一行,每行的最后一个字符是换行符。要将语句扩展到一行或多行,我们可以使用大括号 {}、圆括号 ()、方…...
kafka 3.0 离线安装
1.安装zookeeper 解压apache-zookeeper-3.8.0-bin.tar.gz到指定目录,复制conf目录下zoo_sample.cfg到zoo.cfg,并修改配置。 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit…...
MySQL数据库入门到精通2--基础篇(函数,约束,多表查询,事务)
3. 函数 函数 是指一段可以直接被另一段程序调用的程序或代码。MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。 3.1 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 演示如下: A. con…...
c-数据在内存中的存储-day7
...
3D大模型如何轻量化?试试HOOPS Communicator,轻松读取10G超大模型!
随着计算机技术的不断发展,3D模型在各行各业中的应用越来越广泛。然而,随着模型的复杂性和规模不断增加,处理和浏览超大型3D模型变得越来越具有挑战性。本文将探讨如何轻量化3D大模型,以及如何使用HOOPS Communicator来读取和浏览…...
go并发操作且限制数量
使用管道chan func returnNum() int64 {return time.Now().Unix() } func main() {threadAmount : runtime.GOMAXPROCS(0)if threadAmount < 2 {threadAmount 2}fmt.Println(threadAmount)threadChan : make(chan int, threadAmount)defer close(threadChan)for {for i :…...
AI深度学习-卷积神经网络000
文章目录 前言1.什么是深度学习2.语义分割与实例分割概述3.什么是卷积?4.Unet网络 前言 本栏目,主要为深度学习保姆教程。 主要通过B站视频整理而来: 深度学习保姆级教学 Unet语义分割视觉三维重建算法 1.什么是深度学习 深度学习保姆级教…...
网站有反爬机制就爬不了数据?那是你不会【反】反爬
目录 前言 一、什么是代理IP 二、使用代理IP反反爬 1.获取代理IP 2.设置代理IP 3.验证代理IP 4.设置代理池 5.定时更新代理IP 三、反反爬案例 1.分析目标网站 2.爬取目标网站 四、总结 前言 爬虫技术的不断发展,使得许多网站都采取了反爬机制ÿ…...
2023华为杯研究生数学建模C题分析
完整的分析查看文末名片获取! 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则…...
第三天:实现网络编程基于tcp/udp协议在Ubuntu与gec6818开发板之间双向通信
互联网地址 每一台设备接入互联网后,都会举报一个唯一的地址编号 IP地址 INTERNET地址 internet地址 :它是协议上的一个逻辑地址 目前来说,我们主要的IP地址有两类 IPV4 IPV6 IPV4 其实就是使用一个32bit整数作为IP IPV6 其实就是使用一…...
【MediaSoup---源码篇】(三)Transport
概述 RTC::Transport是mediasoup中的一个重要概念,它用于在mediasoup与客户端之间传输实时音视频数据。 Transport继承着众多的类,主要用于Transport的整体感知 class Transport : public RTC::Producer::Listener,public RTC::Consumer::Listener,publ…...
爱分析《商业智能最佳实践案例》
近日,国内知名数字化市场研究咨询机构爱分析发布《2023爱分析商业智能最佳实践案例》,此评选活动面向落地商业智能的各行企业和商业智能厂商,以第三方专业视角深入调研,评选出具有参考价值的创新案例。永达汽车集团与数聚股份合作…...
怎么降低维普AI率?答辩前1周从70%降到15%以内实操指南!
怎么降低维普AI率?答辩前1周从70%降到15%以内实操指南! 答辩前 1 周送维普测 70% 是什么具体场景? 周一早上 9 点,导师群里发消息:「这周送维普看 AIGC 检测,达标了才能进答辩」。我硕士论文用 DeepSeek …...
瑞萨e² studio嵌入式IDE深度解析:从图形化配置到多核开发的实战指南
1. 项目概述:为什么我们需要关注e studio?如果你是一位嵌入式开发者,尤其是长期耕耘在瑞萨电子(Renesas)MCU生态中的朋友,那么对e studio这个名字一定不会陌生。它不是一个横空出世的全新IDE,而…...
开发AI Agent时利用Taotoken灵活切换底层模型提供商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发AI Agent时利用Taotoken灵活切换底层模型提供商 应用场景类,针对正在开发AI Agent应用的工程师,说明如…...
Android Studio智能编码新体验:盘点几款媲美ChatGPT的免费AI助手
1. Android Studio开发者的AI助手新选择 最近两年AI编程助手的爆发式增长,让我这个老Android开发者都感到惊讶。记得刚开始用Android Studio时,连基本的代码补全都不够智能,现在却能直接让AI帮我写完整段逻辑。更让人惊喜的是,除了…...
延世大学揭秘:为何AI记忆模型越用越“糊涂“?
这项由韩国延世大学(Yonsei University)研究团队完成的研究,以预印本形式发布于2026年5月,论文编号为arXiv:2605.07755,有兴趣深入了解的读者可通过该编号查询完整论文。当我们谈起人工智能处理长篇文字或复杂序列时&a…...
从“抢人”到“识人”,回归匹配本质
金融校招如何穿透简历迷雾锁定真才? 在校园招聘的春季战场上,HR们往往陷入一种矛盾:一方面是后台爆满的简历收件箱,另一方面却是面试环节频频出现的“货不对板”。对于金融、咨询等对软素质要求极高的行业而言,校招实…...
基于 HarmonyOS 6.0 的校园闲置市集应用开发实战:从页面构建到跨端设计深度解析
基于 HarmonyOS 6.0 的校园闲置市集应用开发实战:从页面构建到跨端设计深度解析 前言 随着 HarmonyOS 生态不断完善,HarmonyOS 6.0 在分布式能力、跨端协同以及 ArkUI 声明式开发方面再次进行了大幅升级。相比传统 Android 页面开发模式,Harm…...
PCIe时钟生成器设计:挑战、优化与工程实践
1. PCIe时钟生成器的设计挑战与技术演进PCI Express(PCIe)作为现代计算系统的核心互连技术,其时钟生成器的设计直接关系到整个系统的稳定性和性能表现。随着PCIe标准从Gen1发展到Gen3,数据速率从2.5GT/s提升到8GT/s,时…...
从零构建个性化语音克隆系统:基于VITS与Coqui TTS的实战指南
1. 项目概述:从“我的该死的声音”到个性化语音克隆最近在GitHub上看到一个挺有意思的项目,叫rangrot/mydamnvoice。光看名字就挺有冲击力的,“我的该死的声音”,这背后反映的是一种非常普遍且强烈的需求:我们对自己声…...
基于AgentPort框架快速构建AI智能体Web应用门户
1. 项目概述:从零到一构建你的AI智能体门户最近在GitHub上看到一个挺有意思的项目,叫agentport,作者是yakkomajuri。光看这个名字,你可能会有点摸不着头脑——“Agent Port”?智能体端口?这到底是干嘛的&am…...
