编译原理笔记 2025/4/22
基本概念汇编语言与高级程序设计语言的关系/汇编干嘛的高级语言与硬件无关汇编语言的定义与CPU的指令系统直接相关。只要将高级语言编写的程序等价地转换成特定硬件平台所支持的方式来实现汇编程序或机器指令序列那么软件设计师就不必为每种硬件平台重写编写具有相同功能的软件。编译器1.狭义的编译器将高级语言翻译成等价的可执行指令序列或先翻译成汇编再翻译成可执行指令序列2.广义的编译器只要程序在功能和含义上与原来的程序一致就行不管能不能执行。解释器除了编译执行之外还有解释执行。由于高级语言和底层指令系统差别较大因此要实现对程序的解释执行必须在程序解释执行的过程中进行程序的翻译。由于不是被CPU直接执行解释执行的程序在性能上比编译执行的程序慢。虚拟机如java虚拟机定义了一套标准的指令集合字节码。java编译器将java程序翻译成具有相同功能的字节码程序然后由虚拟机对字节码程序进行解释执行。字节码和CPU二进制指令接近解释的就更快。Java编译器还采用即时编译JIT提高执行效率。编译技术词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。词法分析将源代码转换为词法单元序列词法分析程序又称为扫描程序对源程序每个字符进行线性读取语法分析构建抽象语法树AST。成功表明程序符合语法否则存在某种语法错误语义分析验证语义规则。语法分析只给了程序格式正确性的要求语义则给出了程序含义正确的规定中间代码生成生成中间表示获得了程序语义信息理论上就可以将其翻译成汇编代码或二进制机器代码。不过只是理论上这样实际上要先把程序转换为某种形式的中间表示或中间代码对其进行性能、存储优化处理再翻译成可执行代码(一般采用抽象语法树AST中间表示AST前面进行语法、语义分析时已经逐步建立和完善了)代码优化优化以提高性能执行时间与存储空间两方面目标代码生成输入优化后中间代码产生汇编代码或目标机器代码的指令序列具体操作是为每个变量分配具体存储地址使用实际机器的寄存器将每个中间代码指令映射到一条或一组等价且高效的机器指令等编译器按功能分前端和后端前端词法分析、语法分析、语义分析后端代码优化、目标代码生成等前后端通过中间表示和中间代码进行信息交换形式语言与自动机理论基础词法分析语法分析——自顶向下分析方法三个重要集合自顶向下语法分析条件LL1分析方法求三个集合例子E → TEE → TE | εT → FTT → *FT | εF → (E) | i构造LL(1)分析表分析表构造好后分析判断是否满足LL(1)文法的例子LL1分析法例子消除左递归如果使用自顶向下语法分析如递归向下分析法、LL1分析法必须消除左递归消除左递归是一道文法变换的题。消除左递归例子判断是否能使用LL1分析方法如果能构造LL1分析表语法分析——自底向上分析方法简单优先分析1.简单优先文法及其优先关系2.矩阵的构造3.简单优先分析算法例判断是否是简单优先文法完整例子LR分析法这里的L表示从左向右扫描输入串R表示构造一个最右推导的逆过程。由于LR(k)分析方法对文法的限制很少因而大多数能用上下文无关文法描述的程序设计语言都可用LR分析法进行有效的分析。因此LR分析法是当前最一般的语法分析方法。LR(0)已知文法构造状态机和分析表的例子例子语义分析和符号表中间代码生成中间代码优化

相关新闻

5个实战场景深度解析:如何用GBrain智能大脑解决知识管理痛点?

5个实战场景深度解析:如何用GBrain智能大脑解决知识管理痛点?

5个实战场景深度解析:如何用GBrain智能大脑解决知识管理痛点? 【免费下载链接】gbrain Garrys Opinionated OpenClaw/Hermes Agent Brain 项目地址: https://gitcode.com/gh_mirrors/gb/gbrain 你是否曾花费数小时在堆积如山的笔记中寻找某个会议…

2026/10/17 16:02:43 阅读更多 →
MKS 153F-16205 智能控制器

MKS 153F-16205 智能控制器

MKS 153F-16205智能控制器是MKS Instruments公司的一款集成式下游压力控制设备,内置节流阀与驱动电路。15条特点:该型号(153F-16205)内置节流阀和控制电路。无需外接控制器箱体,一体化设计。支持压力控制和位置控制两种…

2026/10/20 3:16:17 阅读更多 →
Excel批量搜索神器:3步搞定海量Excel文件内容检索的终极解决方案

Excel批量搜索神器:3步搞定海量Excel文件内容检索的终极解决方案

Excel批量搜索神器:3步搞定海量Excel文件内容检索的终极解决方案 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 还在为在成百上千个Excel文件中查找特定信息而烦恼吗?QueryExc…

2026/10/19 16:59:05 阅读更多 →

最新新闻

美团核销失败怎么查,先看 errorCode 再决定能不能重试, 无限聚核

美团核销失败怎么查,先看 errorCode 再决定能不能重试, 无限聚核

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 11:10:05 阅读更多 →
MAS 一条命令免费激活 Windows 与 Office

MAS 一条命令免费激活 Windows 与 Office

MAS 一条命令免费激活 Windows 与 Office 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting. 项目地址: https://gitcode…

2026/10/20 11:10:05 阅读更多 →
Fin-R1: A Large Language Model for Financial Reasoning through Reinforcement Learning

Fin-R1: A Large Language Model for Financial Reasoning through Reinforcement Learning

文章主要内容与创新点总结 主要内容 模型设计 Fin-R1是一个专为金融领域设计的轻量级大语言模型(70亿参数),通过监督微调(SFT)和强化学习(RL)两阶段训练框架,解决金融推理中的核心问题。 数据集构建 提出了高质量金融推理数据集Fin-R1-Data,包含60,091条多维度金融知…

2026/10/20 11:10:05 阅读更多 →
一条消息的丢与重:Kafka 与 RabbitMQ 可靠投递的确认、位点、死信与幂等全链路

一条消息的丢与重:Kafka 与 RabbitMQ 可靠投递的确认、位点、死信与幂等全链路

目录 一、消息为什么会丢、也会重 (一)一条消息要跨过的三段旅程 (二)三种投递语义:不丢与不重为何不可兼得 二、生产端:把"发出去了"变成"确认写入了" (一&#xff0…

2026/10/20 11:10:05 阅读更多 →
电池AI编程实战营系列之三:告别复制粘贴,用AI把电池数据处理写成可复用函数+批量流水线

电池AI编程实战营系列之三:告别复制粘贴,用AI把电池数据处理写成可复用函数+批量流水线

投票钩子:你写电池数据处理脚本,是"一次性的"还是"能复用的"?【A】一次跑完就行 🏃 【B】努力封装成函数 📦 【C】已经做成模块了 🏗️本系列第03篇培训教材:教你告别复制…

2026/10/20 11:10:05 阅读更多 →
STM32F407单相PWM整流双闭环控制实战

STM32F407单相PWM整流双闭环控制实战

简介:本资源是针对2022年全国大学生电子设计竞赛A题‘单相交流电子负载’的完整嵌入式实现方案,面向电赛备赛学生、STM32初/中级开发者及电力电子方向实践者,重点解决单相系统下高精度锁相与PWM整流控制这一核心难点。工程基于STM32F407VET6主…

2026/10/20 11:09:04 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →