编译原理中文版,编译原理 abaab a 表示的语言是什么

1,编译原理 abaab a 表示的语言是什么內含aaXa 或 baXa,其中X是任意多次的(a或b)
2 , 编译原理编译原理是计算机专业的一门重要专业课 , 旨在介绍编译程序构造的一般原理和基本方法 。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成 。编译原理是计算机专业设置的一门重要的专业课程 。编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一 。编译原理课程内容主要是原理性质,高度抽象[1] 。中文名编译原理[1]外文名Compilers: Principles, Techniques, and Tools[1]领域计算机专业的一门重要专业课[1]快速导航编译器 编译原理课程 编译技术的发展 编译的基本流程 编译过程概述基本概念编译原理即是对高级程序语言进行翻译的一门科学技术, 我们都知道计算机程序由程序语言编写而成, 在早期计算机程序语言发展较为缓慢, 因为计算机存储的数据和执行的程序都是由0、1代码组合而成的, 那么在早期程序员编写计算机程序时必须十分了解计算机的底层指令代码通过将这些微程序指令组合排列从而完成一个特定功能的程序, 这就对程序员的要求非常高了 。人们一直在研究如何如何高效的开发计算机程序, 使编程的门槛降低 。[2]编译器C语言编译器是一种现代化的设备, 其需要借助计算机编译程序, C语言编译器的设计是一项专业性比较强的工作, 设计人员需要考虑计算机程序繁琐的设计流程, 还要考虑计算机用户的需求 。计算机的种类在不断增加, 所以, 在对C语言编译器进行设计时, 一定要增加其适用性 。C语言具有较强的处理能力, 其属于结构化语言, 而且在计算机系统维护中应用比较多, C语言具有高效率的优点, 在其不同类型的计算机中应用比较多 。[3]C语言编译器前端设计编译过程一般是在计算机系统中实现的, 是将源代码转化为计算机通用语言的过程 。编译器中包含入口点的地址、名称以及机器代码 。编译器是计算机程序中应用比较多的工具, 在对编译器进行前端设计时, 一定要充分考虑影响因素, 还要对词法、语法、语义进行分析 。[3]1 词法分析[3]词法分析是编译器前端设计的基础阶段, 在这一阶段, 编译器会根据设定的语法规则, 对源程序进行标记, 在标记的过程中, 每一处记号都代表着一类单词, 在做记号的过程中, 主要有标识符、关键字、特殊符号等类型, 编译器中包含词法分析器、输入源程序、输出识别记号符, 利用这些功能可以将字号转化为熟悉的单词 。[3]2 语法分析[3]语法分析是指利用设定的语法规则, 对记号中的结构进行标识, 这包括句子、短语等方式, 在标识的过程中, 可以形成特殊的结构语法树 。语法分析对编译器功能的发挥有着重要影响, 在设计的过程中, 一定要保证标识的准确性 。[3]3 语义分析[3]语义分析也需要借助语法规则, 在对语法单元的静态语义进行检查时, 要保证语法规则设定的准确性 。在对词法或者语法进行转化时, 一定要保证语法结构设置的合法性 。在对语法、词法进行检查时, 语法结构设定不合理, 则会出现编译错误的问题 。前端设计对精确性要求比较好, 设计人员能够要做好校对工作, 这会影响到编译的准确性, 如果前端设计存在失误, 则会影响C语言编译的效果 。[3]
3,想学编译原理谁推荐本好书http://www.verycd.com/topics/170868/这是中文电子版去书店找c或asm语言的教学书吧!那里面会给你讲解编译的原理的 , 因为C语言或asm它们本身就是编译型的编程语言【编译原理中文版,编译原理 abaab a 表示的语言是什么】
4,为什么要学习编译原理转大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容 。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂 , 其解决算法也相对复杂 。我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了 。在20世纪50年代,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成 。在人们尝试编写编译器的同时 , 诞生了许多跟编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大 。就犹如数学家们在解决著名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间诞生不少名著的相关数论 。推荐参考书虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写出一个像TurbocC,Java那样的编译器来说还是太难了 。不仅写编译器困难,学习编译原理这门课程也比较困难 。第一本书的原名叫《CompilersPrinciples,Techniques,andTools》,另外一个响亮的名字就是龙书 。原因是这本书的封面上有条红色的龙,也因为獗臼樵诒嘁朐?砘?嘴域确实?忻?所以很多国外的学者都直接取名为龙书 。最近机械工业出版社已经出版了此书的中文版,名字就叫《编译原理》 。该书出的比较早,大概是在85或86年编写完成的 , 作者之一还是著名的贝尔实验室的科学家 。里面讲解的核心编译原理至今都没有变过,所以一直到今天,它的价值都非凡 。这本书最大的特点就是一开始就通过一个实际的小例子 , 把编译原理的大致内容罗列出来,让很多编译原理的初学者很快心里有了个底,也知道为什么会有这些理论,怎么运用这些理论 。而这一点是我感觉国内的教材缺乏的东西,所以国内的教材都不是写给愿意自学的读者,总之让人看了半天,却不知道里面的东西有什么用 。第二本书的原名叫《ModernCompilerDesign》,中文名字叫做《现代编译程序设计》 。该书由人民邮电出版社所出 。此书比较关注的是编译原理的实践 , 书中给出了不少的实际程序代码 , 还有很多实际的编译技术问题等等 。此书另外一个特点就是其现代而字 。在传统的编译原理教材中,你是不可能看到如同Java中的垃圾回收等算法的 。因为Java这样的解释执行语言是在近几年才流行起来的东西 。如果你想深入学习编译原理的理论知识 , 那么你肯定得看前面那本龙书 , 如果你想自己动手做一个先进的编译器 , 那么你得看这本《现代编译程序设计》 。第三本书就是很多国内的编译原理学者都推荐的那本《编译原理及实践》 。或许是这本书引入国内比较早吧,我记得我是在高中就买了这本书,不过也是在前段时间才把整本书看完 。此书作为入门教程也的确是个不错的选择 。书中给出的编译原理讲解也相当细致 , 虽然不如前面的龙书那么深入,但是很多地方都是点到为止,作为大学本科教学已经是十分深入了 。该书的特点就是注重实践,不过感觉还不如前面那本《现代编译程序设计》的实践味道更重 。此书的重点还是在原理上的实践 , 而非前面那本那样的技术实践 。《编译原理及实践》在讲解编译原理的各个部分的同时,也在逐步实践一个现代的编译器TinyC.等你把整本书看完,差不多自己也可以写一个TinyC了 。作者还对Lex和Yacc这两个常用的编译相关的工具进行了很详细的说明,这一点也是很难在国内的教材中看到的 。推荐了这三本教材,都有英文版和中文版的 。很多英文好的同学只喜欢看原版的书 , 不我的感觉是这三本书的翻译都很不错,没有必要特别去买英文版的 。理解理论的实质比理解表面的文字更为重要 。编译原理的实质几乎每本编译原理的教材都是分成词法分析,语法分析(LL算法 , 递归下降算法 , LR算法) , 语义分析 , 运行时环境,中间代码,代码生成,代码优化这些部分 。其实现在很多编译原理的教材都是按照85,86出版的那本龙书来安排教学内容的,所以那本龙书的内容格式几乎成了现在编译原理教材的定式 , 包括国内的教材也是如此 。一般来说,大学里面的本科教学是不可能把上面的所有部分都认真讲完的,而是比较偏重于前面几个部分 。像代码优化那部分东西,就像个无底洞一样,如果要认真讲 , 就是单独开一个学期的课也不可能讲得清楚 。所以,一般对于本科生,对词法分析和语法分析掌握要求就相对要高一点了 。词法分析相对来说比较简单 。可能是词法分析程序本身实现起来很简单吧 , 很多没有学过编译原理的人也同样可以写出各种各样的词法分析程序 。不过编译原理在讲解词法分析的时候,重点把正则表达式和自动机原理加了进来,然后以一种十分标准的方式来讲解词法分析程序的产生 。这样的做法道理很明显,就是要让词法分析从程序上升到理论的地步 。语法分析部分就比较麻烦一点了 。现在一般有两种语法分析算法,LL自顶向下算法和LR自底向上算法 。LL算法还好说,到了LR算法的时候,困难就来了 。很多自学编译原理的都是遇到LR算法的理解成问题后就放弃了自学 。其实这些东西都是只要大家理解就可以了,又不是像词法分析那样非得自己写出来才算真正的会 。像LR算法的语法分析器,一般都是用工具Yacc来生成,实践中完全没有比较自己来实现 。对于LL算法中特殊的递归下降算法,因为其实践十分简单 , 那么就应该要求每个学生都能自己写 。当然,现在也有不少好的LL算法的语法分析器,不过要是换在非C平台,比如Java,Delphi,你不能运用YACC工具了,那么你就只有自己来写语法分析器 。等学到词法分析和语法分析时候 , 你可能会出现这样的疑问:词法分析和语法分析到底有什么?就从编译器的角度来讲,编译器需要把程序员写的源程序转换成一种方便处理的数据结构(抽象语法树或语法树),那么这个转换的过程就是通过词法分析和语法分析的 。其实词法分析并非一开始就被列入编译器的必备部分,只是我们为了简化语法分析的过程,就把词法分析这种繁琐的工作单独提取出来,就成了现在的词法分析部分 。除了编译器部分 , 在其它地方 , 词法分析和语法分析也是有用的 。比如我们在DOS,Unix,Linux下输入命令的时候,程序如何分析你输入的命令形式,这也是简单的应用 。总之,这两部分的工作就是把不规则的文本信息转换成一种比较好分析好处理的数据结构 。那么为什么编译原理的教程都最终把要分析的源分析转换成树这种数据结构呢?数据结构中有Stack,Line,List这么多数据结构,各自都有各自的特点 。但是Tree这种结构有很强的递归性,也就是说我们可以把Tree的任何结点Node提取出来后,它依旧是一颗完整的Tree 。这一点符合我们现在编译原理分析的形式语言 , 比如我们在函数里面使用函树,循环中使用循环,条件中使用条件等等,那么就可以很直观地表示在Tree这种数据结构上 。同样,我们在执行形式语言的程序的时候也是如此的递归性 。在编译原理后面的代码生成的部分 , 就会介绍一种堆栈式的中间代码 , 我们可以根据分析出来的抽象语法树 , 很容易,很机械地运用递归遍历抽象语法树就可以生成这种指令代码 。而这种代码其实也被广泛运用在其它的解释型语言中 。像现在流行的Java,.NET , 其底层的字节码bytecode,可以说就是这中基于堆栈的指令代码的 。关于语义分析 , 语法制导翻译 , 类型检查等等部分 , 其实都是一种完善前面得到的抽象语法树的过程 。比如说,我们写C语言程序的时候,都知道 , 如果把一个浮点数直接赋值给一个整数,就会出现类型不匹配,那么C语言的编译器是怎么知道的呢?就是通过这一步的类型检查 。像C++语言这中支持多态函数的语言,这部分要处理的问题就更多更复杂了 。大部编译原理的教材在这部分都是讲解一些比较好的处理策略而已 。因为新的问题总是在发生 , 旧的办法不见得足够解决 。本来说,作为一个编译器,起作用的部分就是用户输入的源程序到最终的代码生成 。但是在讲解最终代码生成的时候,又不得不讲解机器运行环境等内容 。因为如果你不知道机器是怎么执行最终代码的,那么你当然无法知道如何生成合适的最终代码 。这部分内容我自我感觉其意义甚至超过了编译原理本身 。因为它会把一个计算机的程序的运行过程都通通排在你面前,你将来可能不会从事编译器的开发工作,但是只要是和计算机软件开发相关的领域,都会涉及到程序的执行过程 。运行时环境的讲解会让你更清楚一个计算机程序是怎么存储,怎么装载,怎么执行的 。关于部分的内容 , 我强烈建议大家看看龙书上的讲解 , 作者从最基本的存储组织,存储分配策略,非局部名字的访问,参数传递,符号表到动态存储分配(malloc,new)都作了十分详细的说明 。这些东西都是我们编写平常程序的时候经常要做的事情,但是我们却少去探求其内部是如何完成 。关于中间代码生成 , 代码生成,代码优化部分的内容就实在不好说了 。国内很多教材到了这部分都会很简单地走马观花讲过去,学生听了也只是作为了解,不知道如何运用 。不过这部分内容的东西如果要认真讲,单独开一学期的课程都讲不完 。在《编译原理及实践》的书上,对于这部分的讲解就恰到好处 。作者主要讲解的还是一种以堆栈为基础的指令代码,十分通俗易懂 , 让人看了后,很容易模仿,自己下来后就可以写自己的代码生成 。当然,对于其它代码生成技术,代码优化技术的讲解就十分简单了 。如果要仔细研究代码生成技术,其实另外还有本叫做《AdvanceCompilerDesginandImplement》,那本书现在由机械工业出版社引进的,十分厚重 , 而且是英文原版 。不过这本书我没有把它列为推荐书给大家,毕竟能把龙书的内容搞清楚,在中国已经就算很不错的高手了,到那个时候再看这本《AdvanceCompilerDesginandImplement》也不迟 。代码优化部分在大学本科教学中还是一个不太重要的部分,就是算是实践过程中,相信大家也不太运用得到 。毕竟,自己做的编译器能正确生成执行代码已经很不错了,还谈什么优化呢?编译原理的课程毕竟还只是讲解原理的课程,不是专门的编译技术课程 。这两门课程是有很大的区别的 。编译技术更关注实际的编写编译器过程中运用到的技术,而原理的课5 , 怎么准备复试编译原理哪个版本的好考研好像不要求编译原理吧编译原理算是很难的一门课了编译原理比较出名的教材有龙书 虎书 和鲸书我说的龙书是指 http://www.china-pub.com/13733它的第二版的中文版刚出不久 个人认为不错 http://www.china-pub.com/39915如果你有不错的C语言基础 可以看虎书 也就是现代编译原理-C语言描述不过要是纯粹为了考试的话 陈意云的那本 编译原理 (这是我们学校的课本)就够了 如果还有什么问题可以PM我 Thanks考研好像不要求编译原理吧 编译原理算是很难的一门课了 编译原理比较出名的教材有龙书 虎书 和鲸书 我说的龙书是指 http://www.china-pub.com/13733 它的第二版的中文版刚出不久 个人认为不错 http://www.china-pub.com/39915 如果你有不错的C语言基础 可以看虎书 也就是现代编译原理-C语言描述 不过要是纯粹为了考试的话 陈意云的那本 编译原理 (这是我们学校的课本)就够了 如果还有什么问题可以PM我 Thanks6,程序员必备的书籍有哪些你好,我推荐以下的书籍: 1、《Code Complete (2nd Ed) by Steve McConnell》,中文版《代码大全(第二版)》 2、《The Pragmatic Programmer》,中文版《程序员修炼之道》 3、《Structure and Interpretation of Computer Programs》 , 中文版《计算机程序的构造和解释》 4、《The C Programming Language》,中文版《C程序设计语言》 5、《Refactoring: Improving the Design of Existing Code》 , 中文版《重构:改善既有代码的设计》 6、《Introduction to algorithms》,中文版《算法导论》 7、《The Mythical Man-Month》,中文版《人月神话》 8、《Design Patterns》,中文版《设计模式》 9、《The Art of Computer Programming(First Volume Hardcover)》,中文版《计算机程序设计艺术第 (第一卷)》 1... 记得有位先哲曾说过,中文版《重构,中文版《C程序设计语言》 5,并不是你用到的书才去读、《Refactoring、《The Mythical Man-Month》、《Head-First Design Patterns》,中文版《代码大全(第二版)》 2,《Clean Code》(中文版《代码整洁之道》),还有《Effective C++》(中文版《Effective C++、《The Pragmatic Programmer》、《The Art of Computer Programming(First Volume Hardcover)》,中文版《设计模式》 9,我推荐以下的书籍你好,中文版《编译原理》 11: Improving the Design of Existing Code》、《Introduction to algorithms》,中文版《程序员修炼之道》 3,而是在于这种语言来体现出来的编程思维模式、《Structure and Interpretation of Computer Programs》 , 中文版《人月神话》 8: 1,中文版《算法导论》 7 , 中文版《计算机程序的构造和解释》 4、《Code Complete (2nd Ed) by Steve McConnell》,读书是一种习惯、《Compilers 。所以说:改善既有代码的设计》 6: Principles,中文版《Head First 设计模式》 除此之外:一种编程语言的重要性并不在于语言本身,《Effective Java》(中文版《Effective Java中文版(第2版)》等 :改善程序与设计的55个具体做法》), Techniques, and Tools 》 , 中文版《计算机程序设计艺术第 (第一卷)》 10、《Design Patterns》、《The C Programming Language》你好,我推荐以下的书籍: 1、《code complete (2nd ed) by steve mcconnell》 , 中文版《代码大全(第二版)》 2、《the pragmatic programmer》 , 中文版《程序员修炼之道》 3、《structure and interpretation of computer programs》,中文版《计算机程序的构造和解释》 4、《the c programming language》,中文版《c程序设计语言》 5、《refactoring: improving the design of existing code》,中文版《重构:改善既有代码的设计》 6、《introduction to algorithms》 , 中文版《算法导论》 7、《the mythical man-month》,中文版《人月神话》 8、《design patterns》 , 中文版《设计模式》 9、《the art of computer programming(first volume hardcover)》,中文版《计算机程序设计艺术第 (第一卷)》 10、《compilers: principles, techniques, and tools 》,中文版《编译原理》 11、《head-first design patterns》,中文版《head first 设计模式》 除此之外,还有《effective c++》(中文版《effective c++:改善程序与设计的55个具体做法》),《clean code》(中文版《代码整洁之道》) , 《effective java》(中文版《effective java中文版(第2版)》等。记得有位先哲曾说过:一种编程语言的重要性并不在于语言本身,而是在于这种语言来体现出来的编程思维模式 。所以说 , 并不是你用到的书才去读,读书是一种习惯 。

    推荐阅读