编译原理基础概念
一、什么是编译程序
编译程序是一种程序,能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,他们在逻辑上等价、完成相同的工作

二、编译阶段
1、当目标程序是机器语言时,编译阶段:(1)编译阶段、(2)、执行阶段

当目标程序是汇编语言时,编译阶段:
(1)编译阶段 (2)汇编阶段 (3)执行阶段

三、编译的两种方式
1、编译方式:

此方式特点:书写源程序的高级语言独立于机器
2、解释方式:

四、编译过程的步骤
Example1:
I wish you success
词法分析 :识别出句子中的每一个字符串
语法分析:主 谓 宾 间宾
语义分析:分析句子的含义
中间代码生成:用一种中间语言或内部形式表示的结果
代码优化:修饰工作
目标代码生成:将中间代码翻译成目标程序

词法分析
输入源程序,对组成源程序的字符串从左到右进行扫描,并根据语言的(编写程序的高级语言)的构词(词法)规则识别分解出一个个具有独立意义的字符串(单词),然后按顺序一一输出单词。
单词:关键字(保留字、基本字),标识符,字符,标点符号。
输入:源程序
输出:单词符号序列
Example2:
分析源程序:main(){}
词法分析后的输出:
保留字main
(
)
{
}
2、语法分析
在词法分析:在词法分析的基础上,根据语言(高级语言)的语法规则(文法规则)分析程序的语法结构,把单词符号串分解成各类语法单位,同时判断各种语法成分在语法结构上的正确性。
语法单位:短语、句子、程序端
输入:单词序列
输出:语法分析后的单词序列
Example3:
分析程序: for i :=1 to 100 do i:=i+1;
经词法分析后的输出:for,i,:=,1,to,100,do,i,:=,+,1;
经过语法分析后为:

3、语义分析
根据语法成分的结构分析其含义
(1)类型审查 如C语言中,*MOD☆
若*为int,则☆必为int,否则报错
(2)类型转化 如:sum:=first + count*10
若count为浮点型,则把10也转换为浮点型
词法规则:单词符号的形成规则(如变量名用大写字母)
语法规定:规定如何从单词符号形成语法单位
4、中间代码生成
用一种中间语言或内部形式表示的结果
5、代码优化
对中间代码进行优化处理,使生成的代码更高效
6、目标代码生成
将中间代码翻译成目标程序
五、编译阶段的组合
编译前端:与源语言有关与目标机无关的部分
编译后端:与目标机有关的部分
遍:对源程序或源程序的中间结果从头到尾扫描一次称为一遍
六、编译程序实现的途径

T型图:将源语言S通过用语言H写的编译器翻译成目标语言T
T型图的两种组合方式


七、自展技术
用“滚雪球”的方式生成编译程序
思想:先用目标机的语言书写源程序的一个子集的编译程序,再用这个子集作为语言,实现源语言的编译程序。
八、自动生成技术
LEX自动生成词法分析工具
YACC自动生成语法分析工具
编译的编译
相关文章:
编译原理基础概念
一、什么是编译程序编译程序是一种程序,能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,他们在逻辑上等价、完成相同的工作二、编译阶段1、当目标程序是机器语言时,编译阶段:(1)编译…...
蔬菜视觉分拣机器人的设计与实现(RoboWork参赛方案)
蔬菜视觉分拣机器人的设计与实现 文章目录蔬菜视觉分拣机器人的设计与实现1. 技术栈背景2. 整体设计3. 机械结构3.1 整体结构3.2 底座结构3.3 小臂结构3.4 大臂结构3.5 负载组件结构3.6 末端执行器结构4. 硬件部分4.1 视觉系统4.1.1 光源4.1.2 海康工业相机4.2 传送带系统4.2.1…...
【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S跑LVGL图形demo
【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S屏幕跑LVGL图形demo🎬运行LVGL 按键组件demo ✨基于STM32CubeMX配置工程是因为方便移植,只要是STM32芯片,拿到我的这个工程源码就可以根据自己的stm32芯片,自…...
写给20、21级学生的话
写给20、21级学生的话前言一、关于招聘变招生,你怎么看?二、对于即将实习/已经实习的学生,你有什么建议?1.学习方面2.提升方面三、思想成年真的很重要前言 最近,有一些同学遇到的实习问题,我统一回复下&…...
功能测试用例多次录制后,我丢掉了selenium,选择龙测AI-TestOps云平台
目录一、如何使用龙测AI-TestOps云平台1、进入龙测AI-TestOps云平台2、新建项目3、新建流程图4、创建任务5、查看任务状态6、查看报告、图片7、下载流程图、测试报告、excel用例二、龙测AI-TestOps云平台AI功能介绍1、NLP2、视频AI转流程图三、总结功能测试用例多次录制后&…...
【C++知识点】C++20 常用新特性总结
✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...
数据库体系结构概念--集中式数据库、分布式数据库
数据库模式 前言: 平时我们接触的‘数据库’一般指的是DBMS,数据库管理系统,DBMS是软件如:mysql、oracle、dm等等都是集中式数据库,但它们不能代表整个数据库,只是通过这些软件来管理相应的数据内容&#…...
PyQt5数据库开发2 5.2 QSqlRelationalTableModel
目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源 4. 添加Action 5. 添加工具栏 6. 添加菜单项 7. 添加退出功能 二、SQL Server下建表插数据 1. 建立表 2. 插入数据 3. 单表数据 4. 联合查询 三、代码实现 1. 新建项目目录 2. 编译窗体文件和资…...
树莓派——智能家居第一步
辛辛苦苦配了成功让树莓派开始工作了,开始搞智能家居!大体思路:基于工厂模式,分模块来实现上图分为三部分:主控、外设、控制主控我采用的是树莓派的4b4G版本,外设包括四个区域的灯(我的和上图有…...
【Golang】Golang基础入门级教程 -- 0基础安装搭建Go语言开发环境
目录 安装和下载GO语言 下载 下载地址 版本的选择 安装 Windows安装 Linux下安装 Mac下安装 检查 GOROOT和GOPATH GOPROXY Go开发编辑器 VS Code介绍 下载与安装 配置 Go扩展 第一个Go程序 Hello World go mod init 编写 编译 VSCode切换默认终端 本篇文章…...
MATLAB | 如何解决实验数据散点图重叠问题(overlap)
本期部分实验效果: 这期讲一下如果数据重合严重该咋办(overlap),事先说明,本文中的绘图均使用一个几行的简单小代码进行了修饰: function defualtAxes axgca;hold on;box on ax.XGridon; ax.YGridon; ax.XMinorTickon; ax.YMinor…...
Kubernetes 一键部署利器:kubeadm
文章目录集群部署痛点kubeadm 的工作原理kubeadm init 的工作流程kubeadm join 的工作流程kubeadm 的部署配置参数集群部署痛点 Kubernetes 的部署一直以来都是挡在初学者前面的一只“拦路虎”。尤其是在 Kubernetes 项目发布初期,它的部署完全要依靠一堆由社区维护…...
[jS 事件循环理解] 主线程 宏任务 微任务 - 执行顺序优先级理解
最近看了一个帖子 事件循环机制-宏任务-微任务 把js单线程中 , 主线程 | 宏任务 | 微任务 的调用顺序讲解的很直白精巧 , 记录一下以供查阅 1.主线程, 可以理解为从上到下顺序执行的一个js线程 2. 宏任务 script / setTimeOut /setInterval等 3. 微任务主要有promise等 4. 热…...
顺序表和链表的比较
这两个结构各有优势,相辅相成。 顺序表: 优点: 1.支持随机访问。 2.CPU高速缓存命中率更高。(物理空间连续) 缺点: 1.头部和中部插入和删除时间效率低(O(n))。 2.连续的物理空间,空间不够后需要增容:…...
Java为什么只能单继承???
目录 先屡清楚继承和实现的区别: 分析原因: 多继承虽然能使子类同时拥有多个父类的特征,但是其缺点也是很显著的,主要有两方面: (1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该…...
数据安全-分类分级 调研分析报告
目录 前言一、数据分类分级概述1.数据分类2.数据分级二、数据分类分级原则三、数据分类分级的框架和方法1.数据分类分级的框架2.分类标准分类常见的方法2.1 MECE2.2 线分法和面分法及混合分法2.3 数据主题域2.4 技术选型维度2.5 以业务应用维度2.6 信息安全隐私方面的分类法3.分…...
浏览器对象详解
文章目录浏览器对象详解一、参考资料二、认识浏览器运行态下的 js1.问:是否了解浏览器的执行态(分层设计)?2.BOM1.[location](https://developer.mozilla.org/zh-CN/docs/Web/API/Location)拓展方向:2.[History](https…...
异步电路后端实现流程(cdc signOff 后端做什么)
一种后端异步电路的signOff流程同步电路和异步电路分别signOff对于同步电路,后端会分析sta setup/hold,这里不在赘述。在该scenario下 异步电路是不会分析,也不会关注异步电路之间的走线在cdc scenario(mode)下sdc有一下设置:将所…...
Linux网络编程实战介绍
文章目录 前言一、Linux网络编程介绍二、文章目录总结前言 本专栏将为大家讲解Linux网络编程的知识,本专栏只需要有C语言基础即可学习,学习本专栏将大大提高你的C语言水平,当然了我也还会在ARM板子上进行实验将Linux驱动也和网络编程联系起来,方便大家去实现自己的项目。我…...
C++概述 课堂笔记
函数的重载在C语言中函数名是唯一的,不可以重复定义,当我们利用函数执行,功能相似的函数,我们也不能使用同一个函数,比如说,求整型的函数,不能用来求浮点型、字符型。在C中引入函数重载的概念&a…...
手把手教你用深信服备份系统做整机恢复:从PXE到U盘启动的保姆级避坑指南
深信服整机恢复实战:PXE与U盘启动的深度避坑手册 当服务器突然宕机,硬盘彻底损坏时,整机恢复能力就是IT工程师的救命稻草。深信服备份系统的裸机恢复功能,能在没有操作系统的"裸机"上直接还原整个系统环境——但实际操作…...
语音转换完全上手:Retrieval-based Voice-Conversion-WebUI从入门到精通
语音转换完全上手:Retrieval-based Voice-Conversion-WebUI从入门到精通 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型! 项目地址: https://gitcode.com/GitHub_Trending/re/Retr…...
OpenClaw多模型切换指南:ollama-QwQ-32B与本地小模型协同工作
OpenClaw多模型切换指南:ollama-QwQ-32B与本地小模型协同工作 1. 为什么需要多模型协同 去年冬天,当我第一次尝试用OpenClaw自动整理电脑里堆积如山的论文时,发现一个尴尬的问题:简单的文件分类任务消耗了过多token。每次让大模…...
MinerU本地部署安全吗?数据隐私保护实战配置
MinerU本地部署安全吗?数据隐私保护实战配置 1. 引言:当AI遇见你的敏感文档 想象一下这个场景:你有一份包含商业机密的合同PDF,或者一份涉及个人隐私的医疗报告扫描件。你想用AI快速提取里面的关键信息,但又担心把文…...
从杂乱桌面到高效办公 GeekDesk实际应用效果展示
评价一款软件产品的优劣,最具说服力的方式莫过于通过真实的实际案例来直观展示其效果和价值。 今天,本文就以几个不同类型用户的真实使用场景为例,完整展示GeekDesk如何帮助他们从杂乱桌面到高效办公的转变过程。 通过这种直观的效果对比&…...
GB28181实战:Windows环境下WVP-GB28181部署全攻略
1. Windows环境下WVP-GB28181部署全攻略 如果你正在寻找一个在Windows系统上快速搭建GB28181视频监控平台的方法,那么WVP-GB28181绝对是个不错的选择。作为一个开源的视频监控平台,WVP-GB28181支持国标GB/T28181协议,能够帮助你轻松实现视频设…...
VSCode远程连接报错?手把手教你修复settings.json文件(附常见错误排查)
VSCode远程连接报错终极排查指南:从settings.json修复到SSH配置优化 当你正准备通过VSCode远程连接服务器投入工作时,突然弹出的Failed to write remote.SSH.remotePlatform报错就像一盆冷水浇下来。更令人抓狂的是,明明命令行SSH连接一切正常…...
告别低效写作:盘点2026年标杆级的AI论文网站
一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文网站,覆盖选题构思、文献整理、内容生成、格式排版全流程,帮你高效搞定论文写作。 一、全流程王者:一站式搞定论文全链路(一天定稿首选ÿ…...
新手零门槛入门:用快马生成你的第一个jiyutrainer式Python练习脚本
作为一个刚接触Python的新手,想要练习编程却常常被各种环境配置和工具安装搞得晕头转向。最近我发现了一个特别适合新手入门的方法——使用InsCode(快马)平台来生成自己的第一个Python练习脚本。下面我就来分享一下这个零门槛的入门体验。 为什么选择jiyutrainer式练…...
别再傻傻线性扫描了!用Python+Scikit-learn手把手实现IVFFlat图像相似度搜索
用PythonScikit-learn实现IVFFlat图像搜索引擎:从原理到实战 当你面对十万张未分类的图片库,如何快速找到与目标图片最相似的十张?传统线性扫描需要计算所有图片特征的距离,耗时呈线性增长。本文将手把手教你用IVFFlat算法构建高效…...
