编译原理第一章概述,文法,语言学习总结

1.编译程序:

        翻译程序,源语言翻译为目标语言

        C语言 ——>汇编语言

2.逻辑过程

词法分析        语法分析        语义分析        中间代码生成优化        目标代码生成优化

词法分析: 最基本的单词分析出来

语法分析:看组成的句子是否有语法错误

语义分析: 分析所写程序具体的含义

3.字母表(符号的集合) 

∑ = {a,b,c} 

aa,ab,aac 都是∑上的符号串                空串ε                长度|ab|=2

对于x=abc,a,ab,abc都是子串,ε不是子串

      4.符号串的头,尾,固有头,固有尾

        符号串的头使得尾不为空,头为固有头,固有尾类似

        5.符号串连接

        x,y为符号串,则他们的连接就是xy

        6.符号串的方幂

        x的n次幂就是把x写n次,x的0次幂等于空串

        7.符号串的集合

        若集合A中的一切元素都是某字母表上的符号串,则A为该字母表上的符号串的集合

        8.空集

        没有任何元素的集合(连空串都没有)

        9.符号串集合的乘积

        AB={x|x∈A,y∈B};        A={1,2}        B={5,6,7}        AB={15,16,17,25,26,27}

        10.字母表∑的闭包(∑*)

        ∑*=∑的零次∪∑的一次∪∑的二次∪∑的三次∪...

        ∑*表示∑上一切长度为n(n>=0)的符号串所组成的集合

        ∑={a,b,c}        ∑*={ε,a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc.....}

        ∑的正闭包就是∑*去除ε

        ∑+=∑∑*

        11.文法和语言

        文法G[<标识符>]  :   <标识符> -> <字母>

         (上下文无关文法    <标识符> -> <标识符><数字>

                                            <标识符> -> <标识符><字母>

                                            <字母> -> a/b...../z

                                            <数字> -> 0/1/2...../9

                                                左部        右部

                                              非终结符        除了非终结符都是终结符

        重写规则(产生式):

        元语言符号 ——>和::= 表示“定义为”

        G定义为四元组(VN非终结符集合,VY终结符集合,P重写规则集合,S识别符号)

        VN={<标识符>,<字母>,<数字>}

        VT={只在右边出现的}

        P={<标识符> -> <字母>                默认第一条是文法的开始符号

                      ...

            }

        S=<标识符>

        很多时候,只将四元组的产生式写出来,就可以表示四元组

        v = 233<字母>666        w = 233a666

        <字母> ::= a        v直接推导/产生出w        v => w

                                    w直接归约为v

        如果只用了一步,推到长度为1        没有用规则,推导长度为0

        G[Z]        推导出的x只含有终结符,x为句子        既含有终结符也含有非终结符,x为句型

        文法描述的语言是该文法一切句子的集合

        L (G[S]) = {x | S = >X,且x是句子}

        递归规则:右边出现了左部,在右部中标识符出现在最左边就是左递归,最右边就是右递归

        12.2型文法(上下文无关文法)

                对于文法G        每个规则都有如下性质:非终结符 ——> 终结符或非终结符

        13.语法分析树

                每个节点都是某一终结符/非终结符

                树根        文法的开始符

                分支        有分支的节点一定是非终结符

                子树        这个节点的树根连同向下射出的部分

                简单子树        只含有单层分支的子树

        14.最左推导

        每次的推导都替换最左边的非终结符

        最右推导(规范推导):每一步都是替换最右边的非终结符

        最左归约(规范归约):从最左边开始归约

        规范句型:在最右推导中推导出来的句型

        15.二义性

        一个语法中存在某个句子有两个不同的语法树,就是二义性的

        16.句型分析

        定义:识别一个符号串是否为某文法的句型

        分类:自上而下(推导),自下而上(归约)

        自下而上:

                子树的末端节点的符号串是相对于子树根的短语

                简单子树的末端节点组成的符号串是相对于简单子树根的简单短语(直接短语)

                最左简单子树的末端节点组成的符号串是句柄

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

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

相关文章

Gradle统一管理依赖

背景 随着项目越来越大&#xff0c;module 越来越多&#xff0c;依赖的库也越来越多&#xff0c;依赖管理也越来越混乱。 我们一般会有以下需求&#xff1a; 1. 项目依赖统一管理&#xff0c;在单独文件中配置 2. 不同 Module 中的依赖版本号统一 管理 Gradle 依赖 说明&a…

通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试,发布到CSDN

效果图 设备树代码 myplatform{compatible "hqyj,myplatform";led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>; interrupt-parent <&gpiof>;interrupts<9 0>;reg<0X12345678 …

抖店商家想要抓住2024年第一波流量,你需要这样做!

大家好&#xff0c;我是电商小布。 春节假期结束了&#xff0c;我们的工作也开始走入正轨当中了。 对于停工一段时间的抖店商家来说&#xff0c;想要在年后抓住第一波流量&#xff0c;该怎么做呢&#xff1f; 简单一点说&#xff0c;还是在运营上。 一、检查店铺类目情况 …

数字电路 第一章—第三节(逻辑函数的化简方法)

一、逻辑函数的标准与或式和最简式 1、标准与或表达式 &#xff08;1&#xff09;下图给出了逻辑函数Y的标准与或表达式&#xff0c;在表达式中每一个乘积项都具有标准形式&#xff0c;这种标准形式的乘积项称为最小项。 &#xff08;2&#xff09;最小项是逻辑代数中的一个…

Windows 2008部署

创建虚拟机2008 创建之后实现远程连接 后端部署 然后解压jdk tomcat mysql jdk 配置环境变量 修改JAVA_HOME 变量名&#xff1a;JAVA_HOME 变量值&#xff1a;电脑上JDK安装的绝对路径 修改CLASSPATH 变量名&#xff1a;CLASSPATH 变量值&#xff1a;.;%JAVA…

vue2+element医院安全(不良)事件报告管理系统源代码

目录 安全不良事件类型 源码技术栈 医院安全&#xff08;不良&#xff09;事件报告管理系统采用无责的、自愿的填报不良事件方式&#xff0c;有效地减轻医护人员的思想压力&#xff0c;实现以事件为主要对象&#xff0c;可以自动、及时、实际地反应医院的安全、不良、近失事件…

力扣经典题目解析--旋转图像(字节二面)

题目 原题地址: . - 力扣&#xff08;LeetCode&#xff09; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1…

基础软件之道:企业级实践与开源创新【文末送书-22】

文章目录 前言-基础软件之路&#xff1a;企业级实践及开源之路企业级实践1. 高可用性和容错性2. 安全性和隐私保护3. 自动化和DevOps实践 开源之路1. 开源操作系统2. 容器化和编排工具3. 数据库系统4. 自动化工具 基于编译器的静态代码分析与软件开发效率、质量和性能1、静态分…

Sora还太远!国产AI创作恐怖电影:《生化危机:重生》上

Sora用不上&#xff01;国产AI创作恐怖电影&#xff1a;《生化危机&#xff1a;重生》上 丧尸围城&#xff0c;世界沦陷&#xff0c;爱丽丝是拯救这个世界的最后一剂解药&#xff0c;然而。。。 《生化危机&#xff1a;重生》&#xff08;上&#xff09;电影开始地球已经被丧尸…

最长的回文串

开始想的简单了&#xff0c;确实没想到奇数字母删去一个后也能用 解法&#xff1a; 桶排序 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define endl \n #define int long long signed main() {int t;cin >> t…

前后端分离vscode保险业务管理系统vue+Nodejs

本设计主要应用于完成对保险业务进行计算机化的管理。系统前台展示各种种类的保险&#xff0c;顾客可以选择登陆后买入。公司员工为管理员&#xff0c;由公司统一分配账号&#xff0c;员工用工号密码登陆。可以修改密码&#xff0c;查看、修改自己的信息。员工可处理顾客信息。…

Qt 事件

1. 事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。在Qt中使用一个对象来表示一个事件&#xff0c;它继承自QEvent类。 2. 事件和信号 事件与信号并不相同&#xff0c;比如我们使用鼠标点击了一下界面上的按钮&#xff0c;那么就会产生…

DT DAY3 信号和槽

作业&#xff1a; 1> 思维导图 2> 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 btn3 new QPushButton("按钮3",this);btn3->resize(ui->btn2->width(),ui->b…

【Spring】Spring MVC

目 录 一.什么是 Spring MVC&#xff1f;1.MVC 定义2.MVC 和 Spring MVC 的关系 二.为什么要学 Spring MVC&#xff1f;三.怎么学 Spring MVC&#xff1f;1.Spring MVC 创建和连接综上连接方式&#xff1a; 2.获取参数1.传递单个参数2.获取多个参数3.获取对象4.获取表单参数5.接…

基于springboot+vue的桂林旅游景点导游平台(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Pyglet综合应用|推箱子游戏之关卡图片载入内存

目录 读取图片 分割图片 综合应用 本篇为之前写的博客《怎样使用Pyglet库给推箱子游戏画关卡地图》的续篇&#xff0c;内容上有相关性&#xff0c;需要阅读的请见链接&#xff1a; https://hannyang.blog.csdn.net/article/details/136209138 「推箱子」是一款风靡全球的益…

RabbitMQ学习整理————基于RabbitMQ实现RPC

基于RabbitMQ实现RPC 前言什么是RPCRabbitMQ如何实现RPCRPC简单示例通过Spring AMQP实现RPC 前言 这边参考了RabbitMQ的官网&#xff0c;想整理一篇关于RabbitMQ实现RPC调用的博客&#xff0c;打算把两种实现RPC调用的都整理一下&#xff0c;一个是使用官方提供的一个Java cli…

开源博客项目Blog .NET Core源码学习(9:Autofac使用浅析)

开源博客项目Blog使用Autofac注册并管理组件和服务&#xff0c;Autofac是面向.net 的开源IOC容器&#xff0c;支持通过接口、实例、程序集等方式注册组件和服务&#xff0c;同时支持属性注入、方法注入等注入方式。本文学习并记录Blog项目中Autofac的使用方式。   整个Blog解…

NXP实战笔记(六):S32K3xx基于RTD-SDK在S32DS上配置PWM发波

目录 1、概述 2、SDK配置 2.1、Port配置 2.2、Emios_Mcl_Ip 2.3、Emios_Pwm 2.4、代码示例 1、概述 针对S32K3xx芯片&#xff0c;产生PWM的硬件支持单元仅有两个&#xff0c;分别是eMiosx与Flexio. 生成PWM的顺序&#xff0c;按照单片机所用资源进行初始化执行如下 初始化…

UTONMOS开启数智龙年,打造元宇宙游戏圈新名片

新年已过&#xff0c;全国各个城市早已客流涌动、热闹非凡。这种繁华景象不仅存在于现实世界&#xff0c;也被复刻到元宇宙的虚拟空间中。 据介绍&#xff0c;UTONMOS“源起山海-神念无界”元宇宙游戏是以原创IP玄幻神话故事“元宇宙史纪”为蓝本打造的元宇宙游戏空间&#xf…