您好、欢迎来到现金彩票网!
当前位置:双彩网 > 线性文法 >

原来编译原理可以这么学

发布时间:2019-06-04 02:29 来源:未知 编辑:admin

  最近对数据结构的研究又有了进展,挺好玩的,总结这些内容的同时,希望也能帮助到大家,这样的话,达到双赢,这才是写博客的目的,接下来我们来轻松学习编译原理,不要被这些纸老虎吓着了。我们一步步来看到底是怎么个情况,该怎么学习呢。。。

  其实这部分内容在我上课的时候,是特别头疼的,不知道老师讲的什么,但是经过自己分析琢磨,感觉还好,能分析的差不多,所以就跟大家分享一下:

  这其中我们看到的,S为开始符,S,A,B为非终结符,在左边,可以推导出一个式子来。而p,q,a,b,c,d为终结符。其实咱们一点都不用记,应该太简单了,你这样想,S(start)也是一个非终结符,然后大写的为非终结符,小写的为终结符,那么这个概念就一点难度都没有了

  0型文法是这几个文法中,限制最少的一个,所以见到的至少是0型文法。G=(Vn,Vt,P,S),其中我们得知道,Vn是非终结符的集合,Vt是终结符的集合,P是推导式的一个集合,S是开始符。我们从图来慢慢分析:

  我们从图中来阐述一下这些概念,S,A,B为Vn,而p,q,a,b,c,d,为Vt,S为开始符。整个集合为P。我们每个式子里边的左边必须要包含这些元素或者元素组合中的至少一个非终结符,右边可以是这些元素的任意组合。我想这样可能好理解一些,这样我们什么公式都不需要记住了,左边有非终结符,右边有终结符,就OK。如:A-ab。

  也叫上下文有关文法;这个1型文法理解起来也没有多大的难度;在0型文法的基础上,我们再添加一点点的限制就行了,我们看添加了什么限制:

  右边的长度=左边的长度,这个长度咱们可以这么来理解,就是这些字符的数量,小的推出大的或者相等的。这样就没有难度了。比如:

  A-B,A-Bba  都符合要求,那么反过来,Bba-A就不符合要求了,因为左边是3,右边是1。看图:

  叫上下文无关文法。2型文法在1型文法的基础上,我们规定2型文法中,左边必须是非终结符,然而一个终结符一个非终结符的组合不是一个非终结符,如Ab不是一个非终结符,但是两个非终结符的组合就是一个非终结符了,如AB就是行了。aB-abc就不符合要求,但是AB-abc就符合要求了。

  也叫正规文法,对应有限状态自动机。在2型文法的基础上再加限制。要求更加高。要么一个非终结符推出一个终结符,要么一个非终结符推出一个终结符并且带一个非终结符。同时说这是一个文法当中的。那么这种属于3型文法,

  你不能一会写一下右线性一会写一下左线性,这样拼凑在一起就构成不了3型文法了。要写就只写右线性,或者只写左线性,不能一块来,分开来就对了。

  1、我们分开来写,应该是:A-e   A-aB   B-Ab  B-a2、我们先来判断是否符合0型文法:0型文法规定左边必须有非终结符,那么这些都是符合的。3、我们再来看是否符合1型文法:1型文法规定从小推到大。也符合。4、我们再来看是否符合2型文法:2型文法规定左边必须是非终结符,也满足。5、我们继续看是否符合3型文法:规定只能符合右线性或者左线性,那么前面一个应该是符合右线性的,后面一个是符合左线性的。所以综合起来就不符合3型文法了。得出结论:那么这个题目属于2型文法。

  规则1:文法产生式(A—xB,B-y ),正规式(A=xy)。对于这个文法产生式转换成正规式,我觉得就是一个代入的过程,把B=y代入A-xB即可得出正规式。反过来,正规式转换成文法产生式,则添加一个变量就搞定了。

  规则2:这个式子里边有一个递归,A—xA,这样就产生递归了,应该是这样的:A-xA,A-xA……这样的无穷下去,最终A还是要等于y的,所以x就有无穷多个,从0个到无穷多个,所以这个推导出来的正规式就是A=x*y,表明x有无穷多个。

  {S,A,B,C,f}是一个状态集合;{1,0}是输入字符;F是一个映射,S是初态,{f}是一个终态。

  编译原理这部分咱们先讲这么多,如讲的有不对的地方,还请您指出,将感激不尽~

  1.项目要求文法要求:(1)从文件读入,每条产生式占用一行(2)文法为LL(1)文法从文件中读入文法,从键盘上输入待分析的符号串,采用LL(1)分析算法判断该符号串是否为该文法的句子。2.实验思路:首...博文来自:落辰li的博客

  【龙书】编译原理(第二版)学习与理解:1.也许我们这辈子都不会去实现一个编译器,但是我们至少要知道编译器是什么?为什么会需要编译器? ①编译器首先也是一种电脑程序。它会将用某种编程语言写成的源代码(原...博文来自:wydsq

  初学编译原理,刚刚看完第三章。打算开始记录书上一些写得不太明白的部分,供大家和自己参考。1、followpos计算问题在第三章末尾,有一节介绍了由正则表达式直接生成DFA的方法。需要三个辅助函数nul...博文来自:yuanyue

  编译原理今天组长教育了一下整个程序的编译过程,感觉自己对于这块了解还是很少,有许多知识之前知道,现在忘记了,还有很多规则只是知道,但并不知道它为什么要这样写,所以再次记录一下,有什么问题或者错误希望大...博文来自:dongyesang的博客

  一、编译程序1、编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目...博文来自:sundingh的博客

  致读者:提到“编译原理”,大部分人的首要反应就是苦恼。确实,编译原理这一部分的内容在计算机学习中是比较难以理解的一部分。首次接触编译原理,我也感觉很复杂,难以理解。但是当看过几次之后,对于一些简单知识...博文来自:栓鸣博客

  以前从没接触过,不过听人讲这是计算机专业最难的一门课程,本人不服气,想挑战一下这门最难的课程,于是自己给自己三天时间来学编译原理,不管看不看得懂,三天过后就不看了。因为当时我要学WEB开发没太多的时间论坛

  我准备考清华计算机系的研究生,想找本比较好的编译原理方面的书,哪位大侠tell me哪本比较好(最好是习题有答案的).多谢! 如果谁有关于清华计算机系研究生方面的信息,也请告诉我.My E_mai论坛

  2015-06-18   在国内,只有一本学校会教编译原理和计算理论的课程。我们这边的招聘经验也表明,好学校学过编译原理的学生的代码能力还是非常不错的。视野也宽阔的多。我认为,学习的语言少了,只有一两...博文来自:know yourself

  原文链接:大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和...博文来自:Nicolas Lees Studio

  前言  由于工作原因需要涉及到做一个代码翻译器 (ActionScript3转TypeScript),由此记录和分享一下工作中的一些心得。如果你恰巧也需要做一个Lua转JavaScript或者其它语言...博文来自:程序员小站

  编译器概述编译器的核心功能是把源代码翻译成目标代码。编译器结构一个典型的编译程序通常由哪些部分组成?画出编译程序的总体结构图。各部分的主要功能是什么?每个阶段将源程序从一种表示转换成另一种表示:词法分...博文来自:每一个不曾起舞的日子,都是对人生的辜负。

  目录写在前面文法概要0型文法(对应图灵机)1型文法(对应线性界线型文法(对应下推自动机,程序设计语言)3型文法(对应有限自动机)四类文法的关系与区别关于正规表达式与上下文无关文法正...博文来自:北岛向南的小站 - CSDN

  前言:这是我学习编译原理,课程实验的内容,课程早已结束,现整理发表。一、实验任务编写一个C语言程序,模拟实现DFA识别字符串的过程。二、实验内容DFA的输入;DFA的存储与读写;DFA的正确性检查;D...博文来自:blackier的博客

  编译原理学习导论大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考...博文来自:arthinking

  在ANSIC的任何一种实现中,存在两个不同的环境翻译环境,在这个环境中源代码被转化为可执行的机器指令执行环境,用于执行代码编译+链接翻译环境组成一个程序的每个源文件通过编译过程分别转换为目标文件每个目...博文来自:某薛的黑猫

  高级语言翻译为机器语言翻译有两种方式:【1】编译方式将高级语言翻译为汇编或者机器语言(称为目标程序),然后在执行它这个翻译过程叫做翻译程序,如果目标程序是汇编语言,那么还需要由另外一个称为汇编程序的翻...博文来自:u014749668的博客

  流水线:流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。概念...博文来自:陈宗毅 技术在于分享

  为了方便自顶向下语法分析,需要求文法对应的first集,follow集,以及select集。本文主要分为两部分,一个是求法解析,还有一个例子详解:第一部分是求法解析将对first集,follow集,s...博文来自:何小杰的博客

  编译原理简单介绍编译原理简单介绍什么叫编译程序翻译程序编译程序翻译和编译的区别编译的过程词法分析语法分析语义分析和中间代码的产生优化目标代码生成编译程序的结构编译程序总框表格与表格的管理出错处理遍编译...博文来自:Jackin 的博客

  都有书签,很详细。 虎书,包含c版和java版中英文,源码,全书答案。 《现代编译原理:C语言描述》全面讲述了现代编译器的结构、编译算法和实现方法,是Andrew w.Apple的“虎书”——Mode论坛

  第五章 语法分析——自下而上分析知识总结一、自上而下分析基本问题1、移进规约基本思想:用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的候选式时,即把栈顶的这一部分替换...博文来自:@Small Cow的博客

  一个源文件到可执行文件这中间编译器到底做了什么呢?请看下面:一个源文件(.c)在编译器经过编译和链接两个大的过程而生成可执行文件(.exe),而编译又分为分为三个阶段:预处理(预编译)、编译、汇编,...博文来自:HanSion.Z

  ·语法树与子树        语法树根:开始符号子树:某一非终结符号(子树的根)及其下面的分支叶:树的末端结点语法树的全部末端结点(自左向右)形成当前句型          ·子树与短语、句柄1、短语...博文来自:吴零敏

  一、编译程序1、编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序。后者在windows操作系统平台下,其文件的扩展名通常为...博文来自:shawjan的专栏

  词法分析词法分析是编译的第一步,主要任务是读入源程序的输入字符(将代码一个字符一个字符的读入),将其组成词素(一个字符序列),生成并输出一个词法单元序列。由于负责读取程序源码,它还有一些其他任务。如:...博文来自:心之所向

  上篇文章【编译原理】语法分析——自上向下分析分析了LL1语法,文章最后说给出栗子,现在补上去。说明:这个语法分析器是利用LL1分析方法实现的。预测分析表和终结符以及非终结符都是针对一个特定文法定义好的...博文来自:杨博东的博客

  编译程序的工作,从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的。但就其过程而言,它与人们进行自然语言直接的翻译有许多相近之处。当我们把一种文字翻译为另一种文字,例如把一段英文翻译为中文时,...博文来自:你来啦

  经过前阵子的各种百度以及对课本的反复研究,终于弄明白了follow集的求法,下面记录一下!首先引用龙书里面的一段较为公式化的follow集求法的话:计算所有非终结符号A的follow(A)集合时,不断...博文来自:YULIU_的博客

  【下载地址】《编译原理》作者AlfredV.Aho、RaviSethi和JeffreyD.Ullman是世界著名的计算机科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》是编...博文来自:weixin_34358365的博客

  编译器概述编译器的核心功能编译器的核心功能是把源代码翻译成目标代码:翻译!!!目标代码!!!理解源代码:词法分析、语法分析、语义分析转化为等价的目标代码:中间代码生成、目标代码生成更好:优化方法编译器...博文来自:每一个不曾起舞的日子,都是对人生的辜负。

  背景项目中要使用C++或C语言解析JSON格式的数据,把解析的结果放到一个通用的数据结构。作为web服务层(这一层大家可以认为是类似于PHP服务器或webpy的服务器容器)到web页面层(这一层是语法...博文来自:cmrsautomation的博客

  这几天邻近期末,感觉上了快一学期的编译原理的许多方面还是难以理解,今天早上就突然遇到了一道题,求短语,直接短语和句柄的题,突然才发现自己连这些词的定义都不清楚,于是仔细查了以下,下面分享出来:短语书上...博文来自:追梦者的部落格

  打开源文件,读取文件内容,直至遇上‘$’文件结束符,然后读取结束。对读取的文件进行预处理,从头到尾进行扫描,去除//和/**/的内容,以及一些无用的、影响程序执行的符号如换行符、回车符、制表符等。但是...博文来自:A little fairy

  设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子。思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和FO...博文来自:NK_test的博客

  容器的数据结构同样是采用红黑树进行管理,插入的元素健位不允许重复,所使用的节点元素的比较函数,只对元素的健值进行比较,元素的各项数据可通过健值检索出来。map容器是一种关联容器,实现了SortedAs...博文来自:Hao_09的专栏

  编译原理是大学的主要课程之一。可是我们在学习时不一定很好的了解。主要的问题可能是课程抽象和没有太多的基础知识和程序结构的了解等。其实通过我前面的CPU设计就可是知道汇编语言是怎么在计算机上运行的...博文来自:Anonymous的博客--Im lovin IT 追求心随意动

  一个编译器的结构分为分析部分(编译器的前端)和综合部分(编译器的后端)。编译器的前端:把源程序分解成为多个组成要素,并在这些要素之上加上语法结构。然后,它使用这个结构来创建该源程序的一个中间表示。如检...博文来自:没有标题

  这是编译原理编程课的一次编程题目,用的j2se实现博文来自:resolvewang的专栏

  前两篇博客演示了广播式的websocket 推送。 广播式有自己的应用场景,但是广播式不能解决我门一个常见的场景,即消息由谁发送、由谁接收的问题。本例中演示了一个简单的聊天室程序。例子中只有两个用户...博文来自:哎幽的成长

  4、图纸统计工具 软件介绍:该工具可以统计已打开AutoCAD图纸模型空间中符合预订要求的实体的数量,进而可用于统计各项目的数量。...博文来自:jellymiki的博客

  深度卷积网络   涉及问题: 1.每个图如何卷积:   (1)一个图如何变成几个?   (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-...博文来自:江南研习社

  tensorflow在ubuntu系统上按照官方文档安装起来相对容易,在centos上由于没有apt-get( yum)相对困难一些,本文会提到一些安装过程中遇到的一些坑及解放方案。...博文来自:zhangweijiqn的专栏

  以下流程是根据博客;并根据自己的实际经验而成,亲测可用。 以下路径多是绝对路径,需要...博文来自:xll_bit的博客

  上一篇文章说了python如何解析excel文件博文来自:waylyn_wu的专栏

  mnist数据集介绍、读取、保存成图片 1、mnist数据集介绍: MNIST数据集是一个手写体数据集,简单说就是一堆这样东西  MNIST的官网地址是 MNIST; 通过阅读官网我们可以知...博文来自:YF_Li123的博客

  一、信道的定义与调制信道的数学模型 1.信道的定义与分类         信道(Channel)是指以传输媒质为基础的信号通道。根据新到的定义,如果信道仅是指信号的传输媒质,这种信道称为狭义信道;如果...博文来自:Seth的博客

  前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...博文来自:天道酬勤,做一个务实的理想主义者

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  题目点评 数据类型是所有程序都会涉及到的,是计算机语言比较基础知识,这种问题被问到的可能性其实并不大,这样的题目只要花点时间把它记下来就好了,难易程度一般。  两大类: 栈:原始数据类型(Und...博文来自:雄领IT的专栏

  4  软件设计   软件设计部分主要包括uboot移植、内核编译、系统移植、设备驱动编程、应用程序编程(QT编程、mysql数据库编程、控制系统编程)、各个模块的功能函数(部分是在windows下面的...博文来自:求是07的专栏

  上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别! 四、SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Age...博文来自:假装在纽约

  一、概述最近在springboot项目引入thymeleaf模板时,使用非严格标签时,运行会报错。默认thymeleaf模板对html5标签是严格检查的。二、在项目中加NekoHTML库在Maven中...博文来自:Luck_ZZ的博客

http://jubileeny.net/xianxingwenfa/118.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有