编译原理分为
1. 编译原理
编译原理):利用编译程序从源语言编写的源程序产生目标程序的过程; 用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成
(1)编译原理分为扩展阅读:
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。
编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。
而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
2. 编译原理就是一个工具嘛
1.编译原理实际上是传统编译器的工作原理。所以他可以说是一种工具所具备的原理。它可以分为六个部分:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。整个过程其实就像把一篇英语文章翻译成中文,起到翻译出让人能够看懂的东西。
2.语法分析和词法分析基本相似但又不尽相同,词法分析输入的是字符,也是平常所说的源代码,而语法分析输入的则是字符流,是字符下面进行的一系列流程,讲这些所翻译过来的,最后再进行编排得到可以令人们看得懂的语句。
3. 编译原理主要数据结构
编译原理主要涉及以下主要数据结构:
记号:
- 在词法分析阶段,扫描程序将源代码字符转换为符号,这些符号通常作为枚举数据类型的值。
- 记号可能包含字符串信息或标识符相关的额外数据。
语法树:
- 语法分析阶段生成,以指针形式表示的动态分配结构。
- 存储为指向根节点的单个变量,节点记录由分析和语义分析程序收集的信息,如表达式数据类型。
符号表:
- 存储标识符及其相关信息,如函数、变量、常量和数据类型。
- 与编译器各阶段频繁交互,对性能有高要求,通常使用散列表实现。
常数表:
- 存储程序中使用的常数和字符串。
- 插入和查找速度至关重要,常数不需删除,因为它们只出现一次,有助于节省存储空间。
中间代码:
- 编译器生成的介于源代码和目标代码之间的表示形式。
- 可以是数组、文本文件或连接列表,类型根据优化需求不同。
临时文件:
- 在编译过程中用于保存中间结果的文件。
- 早期编译器中常用,现代编译器中更多地用于存储整个编译单元,在处理地址反填等问题时必不可少。
4. 编译过程分为哪几个阶段各阶段的遵循的原则、识别机构、使用的文法编译原理
编译原理中的遍概念
编译阶段也常常划分为两大步骤,分析步骤和综合步骤 分析步骤和综合步骤 分析步骤是指对源程序的分析 -线性分析(词法分析或扫描) -层次分析(语法分析) -语义分析 综合步骤是指后端的工作,为目标程序的生成而进行的综合
你分析过吗?若按照这种组合方式实现编译程序,可以设想,某一编译程序的前端加上相应不同的后 端则可以为不同的机器构成同一个源语言的编译程序。也可以设想,不同语言编译的前端生成同一种中间 语言,再使用一个共同的后端,则可为同一机器生成几个语言的编译程序。
一个编译过程可由一遍、两遍或多遍完成。所谓"遍",也称作"趟",是对源程序或其等价的中间语言程 序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成上述一个阶段或多个阶段的工作。例如一遍可 以只完成词法分析工作;一遍完成词法分析和语法分析工作;甚至一遍完成整个编译工作。对于多遍的编 译程序,第一遍的输入是用户书写的源程序,最后一遍的输出是目标语言程序,其余是上一遍的输出为下 一遍的输入。
在实际的编译系统的设计中,编译的几个阶段的工作究竟应该怎样组合,即编译程序究竟分成几遍, 参考的因素主要是源语言和机器(目标机)的特征。比如源语言的结构直接影响编译的遍的划分;像 PL/1 或 ALGOL 68 那样的语言,允许名字的说明出现在名字的使用之后,那么在看到名字之前是不便为包含该名 字的表达式生成代码的,这种语言的编译程序至少分成两遍才容易生成代码。另外机器的情况,即编译程 序工作的环境也影响编译程序的遍数的划分。遍数多一点,整个编译程序的逻辑结构可能清晰些,但遍数 多即意味着增加读写中间文件的次数,势必消耗较多时间,一般会比一遍的编译要慢。
5. 编译原理第2版图书目录
《编译原理第2版》图书目录概览:
第1章 内容概述
- 定义编译程序:介绍编译程序的概念,即如何将源代码转化为机器可执行代码的过程。
- 编译过程分阶段:概述编译过程的关键阶段,包括程序设计语言的结构分析。
- 解释程序与软件工具:解释解释程序作为辅助工具的作用,以及处理源代码的软件工具的功能。
- 程序设计语言范型:讨论不同编程语言的特点和适用性,为PL/0编程提供理论基础。
- PL/0编程实践:通过实现PL/0编程程序来深入理解编译原理,包括语言描述。
第2章 编译程序的结构
- 词法分析:详细剖析词法分析阶段的任务和方法。
- 语法语义分析:深入探讨语法分析和语义分析的核心内容。
- 目标代码生成:介绍目标代码的结构和生成方法,这是编译过程的直接体现。
- 错误处理:阐述编译过程中的错误处理策略和机制。
- 存储分配:解释执行时存储分配的重要性和实现方法。
请注意,以上仅为图书目录的概览,具体内容可能因版本和出版社的不同而有所差异。如需更详细的信息,建议直接查阅《编译原理第2版》的实体书或电子版。