编译原理:词法分析

news2025/1/12 12:11:24

参考视频:方舟·编译技术入门与实战 以及 西交冯博琴老师的相关视频

编译的过程包括 词法分析(分析程序符号)、语法分析(分析语法单位)、中间代码生成、代码优化和目标代码生成。该架构自1960s之后基本未变。

一、编译过程各部分的任务

(1)词法分析:输入源程序,扫描分解源程序字符串,识别五类符号,包括定义符、标识符、运算符、界符和常数,转为单词符号。
(2)语法分析:在词法分析基础上,将单词符号转为语法单位(如短句、子句、句子、程序段、程序等),并确定整个输入串在语法上是否正确。语法分析主要做三件重要事情:一是程序入口在哪;二是中间怎么处理;三是得到的结果是什么。
(3)中间代码生成:有时也称之为语义分析,它对语法分析所识别出的各类语法单位,分析其含义,并进行初步翻译(即产生中间代码)。
(4)代码优化:主要针对中间代码进行加工变换,希望产生更高效,即节省空间和时间,的目标代码。
(5)目标代码生成:将中间代码转换为特定机器上的目标代码。

💡 学习的方法:建立知识地图🗺️
对一个新领域的探索,需要快速建立知识地图。
有限的时间,有限的注意力和有限的体力,要求我们在尽可能短的时间内高质量获取知识。

编译器整体架构和前端设计 (from Prof. Cooper, Rice University)

编译器的前端部分包括词法分析器、解释器和语义阐述器(非必需?),前端输出为中间代码或中间表示 Intermediate Representation (IR),传给优化器,优化后的 IR 再传给后端,得到目标代码。

二、词法分析知识地图

来自 Rice University 的 Cooper 教授 COMP 412 课程的课件,如何构造出一个 Scanner。

术语解释:

  1. RE - 正则表达式
  2. NFA - 非确定性有限自动机
  3. DFA - 确定性有限自动机
  4. minimal DFA - 最小DFA
  5. Scanner - 词法分析器

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

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

相关文章

FFMPEG读取本地文件推流到RTMP服务器!

前言: 今天我们再来分享一个开源代码项目,这个代码项目是通过读取本地的TS文件,然后推流到RTMP服务器上面。一、项目框图和运行效果: 1.1.项目的框图:1.2.运行效果:二、模块的讲解: 2.1.初始化文…

做了6年的软件测试了,想提升一下自己,学一下自动化测试,但是没有方向,怎么办?

前言 最后后台一位粉丝和我说做了6年的功能测试,在职场没有突破涨薪,陷入了一个迷茫的境地,想学自动化测试但是又不知道从哪里入手!!!今天静姐就带这位粉丝盘一盘自动化测试如何进阶?&#xff…

Python OpenCV 单目相机标定、坐标转换相关代码(包括鱼眼相机)

前言 本文不讲原理,只关注代码,有很多博客是讲原理的,但是代码最多到畸变矫正就结束了,实际上就是到 OpenCV 官方示例涉及的部分。   在官方示例中使用黑白棋盘格求解了相机的内外参和畸变系数,并对图像做了畸变矫正…

多态实现原理

学习Java的时候就已经学习了多态但是对于多态的原理还是不是很明白所以写下这篇文章来记录一下 如果后面有新的理解也继续添加到本页面 什么是多态 多态是面向对象编程里面的概念,一个接口的多种实现不同的实现方式,即为多态 这里的接口不应理解得太死板…

国考省考行测:关联词分析法,转折,总结,条件,递进,并列,各种关联词的典型词语和重点在哪

国考省考行测:关联词分析法,转折,总结,条件,递进,并列,各种关联词的典型词语和重点在哪 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论&a…

Twitter营销你需要做的细节

优化首页 1. 塑造品牌形象 品牌对于企业来说是一种无形的价值,所以在任何平台上都要注意加深品牌印象,在推特上也是一样的,比如一样的logo,让访问过你网站的人一眼就认出你来。这样,品牌的不断深入,才能让…

如何用mac搭建本地svn服务器(如何将mac变成版本管理服务器)

前言 一、搭建本地svn服务器 1.建立代码库 2.配置文件修改 3.启动本地svn服务 二、搭建过程中常见问题 如果Mac os升级到10.0以上,自带的svn不支持了怎么办 三、mac本地使用svn软件管理svn库 cornerstone3安装 四、使用Cornerstone会存在的问题 Mac打开应用提示已损…

硬件 RAID 与软件 RAID 之间的区别

独立磁盘冗余阵列 (RAID) 是一种将多个物理驱动器组合到一个单元中的虚拟磁盘技术。这是一种通过使用多个驱动器来提高存储介质的性能和可靠性的方法。驱动器配置为在磁盘之间划分数据以分配负载,或者复制数据以确保在磁盘发生故障后可以恢复…

Oauth2.0实现单点登录的原理流程,这次总该懂了!

单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。 1 什么是单点登录 1.1 多点登录 传统的多点登录系统中,…

正大国际期货:外盘期货恒指八大交易法则!

现在比较流行的期货并不算多,主流的就是恒指期货、美原油期货和黄金期货还有德指期货、道指、铜、天然气等等,恒指期货是最适合亚洲人投资的期货品种,现在国内很多投资人也会选择恒指期货入手。那么投资者要遵循哪些法则才可能在期货市场中获…

安装虚拟机以及linux(Centos 7)系统

背景:模拟部署系统至Linux服务器上并运行 下载VMware Workstation Pro并激活,自行百度下载。 打开虚拟机“创建新的虚拟机” 然后选择自定义,选择好后点击下一步 直接下一步 稍后安装操作系统 客户机操作系统选择Linux,版本选择…

element集成第三方icon图标

引言 集成阿里图标库 进入阿里icon,新建项目 选择一个自己喜欢的icon库,将里面的图标加入购物车中 因为没有批量导入购物车,所以一般情况下需要一个一个去点,太浪费时间,那么请在控制台输入以下代码,批量…

Spring 中 @Bean 注解流程分析

代码案例 现在 SpringBoot、SpringCloud 基本上都是通过 Bean 注解来将组件交给 Spring 管理,所以对 Bean 的流程应该要有所了解。 这里先定义一个 Blue 的实体类,如下: public class Blue { }然后定义一个入口类,通过 Bean 注…

rocketMq介绍和安装

rocketMq介绍和安装 Mq介绍 MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。 QQ和微信就是典型的MQ。 MQ的作用 主要有以下三个…

天翼物联2项成果成功入选“工信部2022年移动物联网应用典型案例库”

近日,工信部公布了2022年移动物联网应用典型案例征集活动入库案例名单,天翼物联牵头申报的“智慧农业——水肥一体化物联网项目”、“智能表计——抄表机器人物联网项目”成功入选。 本次典型应用案例征集由工业和信息化部组织开展,征集范围包…

产品结构设计的技巧和规则?

说到产品,产品结构设计在当今时代非常重要。它不仅感受到用户的青睐,而且影响销售,因此每个人都非常重视产品结构设计。那你知道产品结构设计的技巧和规则吗? 一、选材方面: 1.耐温等塑料制品的使用环境.耐寒.食品卫生.耐磨等; 2…

resnet(3)------卷积层与激活函数与池化层

文章目录一. 卷积层二. 激活函数1. Sigmoid函数2. tanh函数3. Relu函数三. 池化层一. 卷积层 上一篇文章我们讲到过可以通过控制卷积层的个数来提取图像的不同特征,但是事实上卷积是一种线性运算,更准确的说是一种线性加权运算,而线性运算是…

web课程设计网页规划与设计——惊奇漫画网站

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

基于jsp+mysql+ssm电影视频预约推荐系统-计算机毕业设计

项目介绍 本基于SSM框架的电影预约推荐系统主要包含了等系统用户管理、影视分类管理、电影预约信息管理、预约信息审核管理多个功能模块,系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统是独立的运行,不依附于其他系统,可移植&…