尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
编译原理笔记 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)已知文法构造状态机和分析表的例子例子语义分析和符号表中间代码生成中间代码优化
RELATED

相关推荐

Forza-Mods-AIO:终极地平线游戏增强工具的革命性突破

Forza-Mods-AIO:终极地平线游戏增强工具的革命性突破

Forza-Mods-AIO:终极地平线游戏增强工具的革命性突破 【免费下载链接】Forza-Mods-AIO Free and open-source FH4 & FH5 mod tool 项目地址: https://gitcode.com/gh_mirrors/fo/Forza-Mods-AIO Forza-Mods-AIO是一款开源免费的极限竞速地平线4和5游戏修…

📅 2026/8/23 1:52:20
第六届全国高校教师教学创新大赛获奖:哈尔滨华德学院历史性突破

第六届全国高校教师教学创新大赛获奖:哈尔滨华德学院历史性突破

2026年7月23日,第六届全国高校教师教学创新大赛全国现场赛在南京圆满落幕。本届大赛由教育部高等教育司指导、中国高等教育学会主办,是全国高校教师教学竞赛中覆盖面最广、参与教师最多、影响力最大的赛事之一。大赛围绕“推动教学创新、培养一流人才”目…

📅 2026/9/1 1:48:30
Baserow:解决企业数据孤岛问题的开源无代码数据库平台

Baserow:解决企业数据孤岛问题的开源无代码数据库平台

Baserow:解决企业数据孤岛问题的开源无代码数据库平台 【免费下载链接】baserow Build databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable a…

📅 2026/9/10 1:44:58
MORE NEWS

更多资讯

📰

RuoyiOffice快速开发平台:基于若依的企业管理模块详解与实战

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

📰

车载以太网协议架构与工程实践:从CAN到SOME/IP

1. 为什么现在每个人都在聊车载以太网——从一个被CAN逼到墙角的项目说起前两年做中央计算平台的预研,第一次把完整的车载以太网链路打通时,我的第一反应不是兴奋,而是有点懵。从CAN/LIN转到以太网,坑比想象的多。光一个物理层就有…

📰

Java编程基础与核心概念全解析

1. 为什么Java基础知识如此重要?作为一名从零开始学习Java的开发者,我深刻体会到基础知识的重要性。很多人觉得Java入门简单,但真正能写出健壮、高效代码的人,往往都经过了扎实的基础训练。Java作为一门面向对象的编程语言&#x…

📰

房颤信号特征提取:从RR间期到样本熵的MATLAB实现全流程

简介:基于MATLAB的房颤信号特征提取项目,面向生物医学工程、信号处理专业的研究者与学生,围绕心电图(ECG)中房颤这一常见心律失常,系统实现从原始信号导入、滤波预处理、R波检测到特征参数提取与分类评估的…

📰

Aurora PostgreSQL性能监控与四维诊断实践

1. 项目概述Aurora PostgreSQL作为AWS云数据库服务的核心产品,其稳定性和性能直接影响企业关键业务运行。但在实际运维中,性能下降、连接池耗尽、查询阻塞等问题往往难以快速定位。传统监控工具通常只能提供滞后报警,而我们需要的是能在问题影…

📰

Dagger TypeScript SDK 中 GitRefTreeOpts 类型别名详解:控制 GitRef.tree() 的克隆深度与 .git 目录行为

Dagger TypeScript SDK 中 GitRefTreeOpts 类型别名详解:控制 GitRef.tree() 的克隆深度与 .git 目录行为 【免费下载链接】dagger Automation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud 项目地址: https://g…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬