编译原理.龙书学习1

第一章:

编译器:将程序翻译成一种能够被计算机执行的形式

解释器:解释器直接利用用户提供的输入执行源程序中指定的操作

一个编译器的结构

编译器将源程序映射为语义上等价的目标程序,这个映射过程由两部分组成:分析部分和综合部分

如果一个语言使用的策略支持编译器静态决定某个问题,那么我们说这个语言使用了一个静态策略,或者说这个问题可以在编译时刻决定,另一方面,一个只允许在运行程序的时候做出决定的策略称为动态策略,或者被认为需要在运行时刻做出决定

环境是一个从名字到存储位置的映射,因为变量就是内存位置(即c语言中的术语“左值”)

状态就是从一个内存位置到他们的值的映射,以C语言的术语说,即状态把左值映射为他们的相应右值

第二章--一个简单的语法制导翻译器

一个程序语言的语法(syntax)描述了该语言的程序的正确形式

该语言的语义(semantics)则定义了程序的含义

一个编译器前端的模型

语法树

语法定义

语法分析

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

语法分析树

一个文法的语言的另一个定义是指任何能够由某棵语法分析树生成的符号串的集合。为一个给定的终结符号串构建一颗语法分析书的过程称为对该符号串进行语法分析

一个文法可能有多颗语法分析树能够生成一个给定的终结符号串,这样的文法称为二义性。我们需要为编译应用设计没有二义性的文法,或者在使用二义性文法时使用附加的规则来消除二义性

正则表达式

最后一个是字符范围的补集

词法分析

编译器实现的五个阶段之一——词法分析。

  1. 词法分析的目标是将代码分割为词法单元,如关键字、变量名、运算符等。词法分析器将通过识别不同单元之间的分隔符来完成这一任务。
  2. 每个词法单元都有一个对应的类别,如标识符、关键字、运算符等。词法分析器将识别并分类这些子字符串,并将其传递给解析器。
  3. 解析器将以一系列的类别和子字符串的形式接收词法分析器的输出,这些类别和子字符串组成了所谓的"token"。

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

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

相关文章

【PostgreSQL内核学习(十三)—— (PortalRun)】

PortalRun 概述PortalRun 函数MarkPortalActive 函数PotalSetIoState 函数FillPortalStore 函数DoPortalRunFetch 函数PortalRunSelect 函数PortalRunMulti 函数MarkPortalDone 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的…

如何在Ubuntu中挂载新硬盘

参考:如何在Ubuntu中挂载新硬盘_笔记大全_设计学院 ubuntu将大于2T硬盘挂载到/home目录并使其永久生效的详细操作步骤_ubuntu挂载硬盘到home目录_菲玛的博客-CSDN博客win10ubuntu18.04 home目录扩容方法_ubuntu增加home空间_cfreeze的博客-CSDN博客 1、检测新硬盘…

黑马JVM总结(二十二)

(1)类的结构-field 成员变量信息 类字节码里的一些简单表示: (2)类文件结构-method-init (3)类文件结构-method-main (4)类文件结构-附加属性

Mojo:新型AI语言中的7个令人惊叹的Python升级,用简单的英语解释人工智能

Mojo:新型AI语言中的7个令人惊叹的Python升级 编程之美 用简单的英语解释人工智能 编程之美 由Coding Beauty设计的图像,使用Mojo标志和Python标志。 它比C更快,与Python一样简单,但速度提高了35000倍。 进入Mojo:一种…

Northstar 量化平台

基于 B/S 架构、可替代付费商业软件的一站式量化交易平台。具备历史回放、策略研发、模拟交易、实盘交易等功能。兼顾全自动与半自动的使用场景。 已对接国内期货股票、外盘美股港股。 面向程序员的量化交易软件,用于期货、股票、外汇、炒币等多种交易场景&#xff…

【MySQL集群二】使用MyCat和ProxySql代理MySQL集群

中间件代理MySQL MyCat安装MyCat介绍:步骤1:安装Java环境步骤2:下载并解压Mycat步骤3:配置Mycat步骤4:启动Mycat ProxySql安装ProxySql介绍:步骤1:更新系统步骤2:安装ProxySQL步骤3&…

Pytorch源码编译Libtorch

创建虚拟环境: conda create -n build-libtorch python3.8 cd build-libtorch安装相关依赖: conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses下载 Pytorch&am…

微信小程序快速入门01(含案例)

文章目录 前言一、组件1.常用视图容器类组件viewscroll-viewswiper、swiper-item 2.text、rich-text3.其他常用组件buttonimagenavigator 二、小程序API三、数据绑定1.定义页面数据2.绑定数据 四、事件绑定1.什么是事件2.小程序中常用的事件3.事件对象 的属性列表target和curre…

详解Renko图表如何表现价格变动

相信大多数投资者与FPmarkets澳福一样,都已发现Renko图表与日本烛台图一样,具有上升和下降的特性。增长期间的典型砖块颜色为绿色或白色,而衰退期前的Renko则呈现红色或黑色。 今天,FPmarkets澳福将与各位投资者共同探讨Renko图表…

计算机视觉的优势和挑战

计算机视觉(CV)是一项快速发展的技术,它具有许多优势和挑战。以下是一些可能的例子: 优势: 1. 自动化:CV技术可以自动化任务,例如图像分类、目标检测和跟踪,从而提高生产力和减少人…

第一个 Go 程序“hello,world“ 与 main 函数

第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…

C++qt Day10

1.制作闹钟 头文件 #include <QWidget> #include <QTimerEvent> #include <QTime> #include <QtTextToSpeech/QTextToSpeech> #include <QTextEdit> #include <QString>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMES…

PowerDesigner 连接 MYSQL

我使用的是powerDesigner16的版本&#xff0c;使用前先保证安装了 mysql odbc 驱动包 选择&#xff1a;文件 -> 反向工程 -> database… 一大波图片正在来袭。。。 点击确认 至此连接成功

代码随想录二刷day37

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣738. 单调递增的数字二、力扣968. 监控二叉树 前言 一、力扣738. 单调递增的数字 class Solution {public int monotoneIncreasingDigits(int n) {Str…

【JavaScript保姆级教程】Javascript常量

文章目录 前言一、常量1.1 常量是什么1.2 常量的作用 二、示例代码2.1 示例1&#xff1a;声明一个常量2.2 示例2&#xff1a;常量的命名规则2.3 示例3&#xff1a;常量与变量的区别 总结 前言 欢迎来到【JavaScript保姆级教程】&#xff01;在本篇教程中&#xff0c;我们将讨论…

【激光雷达码盘偏摆角的真假点映射关系】

激光雷达码盘偏摆角的真假点映射关系 一、概要二、完架构流程三、技术细节四、完整代码 一、概要 本代码主要计算激光雷达码盘偏摆角&#xff08;也可以理解为雷达的零位角&#xff09;导致的实际slam建图距离的偏差&#xff0c;只取了第一个象限作为分析目标。最终得出的结论是…

浅谈Deep Learning 与 Machine Learning 与Artificial Intelligence

文章目录 三者的联系与区别 三者的联系与区别 “Deep Learning is a kind of Machine Learning, and Machine Learning is a kind of Artificial Intelligence.” 人工智能&#xff08;AI&#xff09;&#xff0c;机器学习&#xff08;Machine Learning&#xff0c;简称ML&am…

41. Linux系统配置FTP服务器并在QT中使用QFtp实现文件上传

1. 说明 这篇博客主要记录一些在Linux系统中搭建FTP服务器时踩过的一些坑,以及在使用QFtp上传文件时需要注意的问题。 2. FTP环境搭建 在linux系统中,需要安装vsftpd,可以在终端中输入下面的命令进行安装: sudo apt-get install vsftpd使用上述命令安装后,系统中会有一…

深入探索RTPS/DDS协议:为嵌入式设备打造的可移植C++实现指南

第一部分&#xff1a;RTPS/DDS协议简介及其在嵌入式设备中的重要性 1. RTPS/DDS协议简介 RTPS (Real-Time Publish-Subscribe) 和 DDS (Data Distribution Service) 是两个紧密相关的中间件协议&#xff0c;专为实时系统设计。它们为分布式应用提供了一种高效、可靠和可扩展的…

价值1000的情感爆文写作prompt,助你写出10万+阅读微信爆文

原文&#xff1a;价值1000的情感爆文写作prompt&#xff0c;助你写出10万阅读微信爆文 - 知乎 是否经常看到一些自媒体晒出这样的图片&#xff1f; 或者是这样的10w的阅读文章 那么这是真实能赚钱的吗&#xff1f;还是自媒体夸大其说&#xff0c;吸引流量。 我们先简单了解什…