📝 编译器设计教程

153篇技术文档
  C程序,用于检测C程序中的令牌

📅  最后修改于: 2021-06-28 06:50:29        🧑  作者: Mango

众所周知,词法分析是编译器的第一阶段,也称为扫描器。它将输入程序转换为令牌序列。AC程序由各种令牌组成,令牌可以是关键字,标识符,常量,字符串字面量或符号。例如:下面是一个C程序,用于打印给定C程序中的所有关键字,字面量,有效标识符,无效标识符,整数,实数:输出:想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。...

  编译器设计中的窥孔优化

📅  最后修改于: 2021-06-28 06:50:49        🧑  作者: Mango

窥孔优化是对一小部分代码执行的一种代码优化。它是在一段代码中的非常少的一组指令上执行的。The small set of instructions or small part of code on which peephole optimization is performed is known aspeepholeorwindow.为什么编程需要懂一点英语它基本上是在替换理论上工作的,在替换理论...

  编程语言分类列表

📅  最后修改于: 2021-06-28 06:51:44        🧑  作者: Mango

编程语言是形式化的语言,带有一组提供所需输出的指令。为了在我们的机器中实现各种算法,我们开始使用编程语言。一组特定的指令用于可编程机器,而不是通用的编程语言。计算机编程语言用于与计算机通信。每种编程语言都基于某些语法和语义规则。计算机以数字表示形式工作。仅将0或1的存在理解为关闭或打开。因此,要与计算机进行通信,我们必须以二进制形式给出指令,而这几乎是不可能的,因此这里出现了一种编程语言来拯救我们...

  编译器设计中的循环优化

📅  最后修改于: 2021-06-28 06:52:04        🧑  作者: Mango

循环优化是提高执行速度并减少与循环相关的开销的过程。它在提高缓存性能和有效利用并行处理功能方面发挥着重要作用。科学程序的大多数执行时间都花在循环上。Loop Optimization is a machine independent optimization.为什么编程需要懂一点英语减少内部循环中的指令数量可以提高程序的运行时间,即使增加了该循环外部的代码量也是如此。循环优化技术:降低频率(代码运...

  编译器理论|套装2

📅  最后修改于: 2021-06-28 06:52:27        🧑  作者: Mango

GATE CS考试中提出了以下问题。1.给出以下表达语法:E-> E * F | F + E | FF-> FF | ID以下内容哪些是对的? (GATE CS 2000)(a)*比+具有更高的优先级(b)–优先级高于*(c)+和-具有相同的优先级(d)+比*具有更高的优先级答案(b)语法中的优先级通过确保具有较高优先级运算符产生式规则永远不会产生与运算符的表达与低优先级执行。在给定的语法中,“-...

  Lex程序在给定的输入文件中打印总字符,空格,制表符

📅  最后修改于: 2021-06-28 06:52:47        🧑  作者: Mango

Lex是一个生成词法分析器的计算机程序。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。用于执行lex程序的命令为:让我们看看Lex程序在给定的输入文件中打印总字符,空格,制表符。下面是实现:输入:输出:想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。...

  运行时存储组织

📅  最后修改于: 2021-06-28 06:53:07        🧑  作者: Mango

运行时环境是目标计算机的寄存器和内存的结构,用于管理内存并维护指导程序执行过程所需的信息。运行时环境的类型–完全静态:对于不支持递归函数调用的语言,完全不可能使用指针或动态分配的语言可能会使用完全静态的运行时环境。每个过程只有一个激活记录,该激活记录在执行之前分配。变量通过固定地址直接访问。很少的簿记开销;也就是说,最多返回地址可能必须存储在激活记录中。调用序列涉及每个参数地址的计算,并将其存储到...

  递归预测下降解析器与非递归预测下降解析器之间的区别

📅  最后修改于: 2021-06-28 06:53:33        🧑  作者: Mango

先决条件–递归下降解析器1.递归预测下降解析器:递归下降解析器是一种语法分析的自上而下的方法,其中使用了一组递归过程来处理输入。一个过程与语法的每个非终结符相关联。在这里,我们考虑一种称为“递归递归下降解析器”的递归下降解析的简单形式,其中,超前符号明确确定了每个非终端通过程序主体的控制流。在分析输入字符串期间,过程调用的顺序隐式定义了用于输入的解析树,并且可以根据需要用于构建显式解析树。在递归下...

  Apache Cassandra中的数据建模概述

📅  最后修改于: 2021-06-28 06:53:58        🧑  作者: Mango

在本文中,我们将学习Cassandra中的这三种数据模型:概念,逻辑和物理。学习目标:使用Cassandra中的快速设计技术构建数据库。在Cassandra中使用查询驱动的方法来改进现有模型。通过Cassandra中的分析和验证技术来优化现有模型。Apache Cassandra中的数据建模:在Apache Cassandra中,数据建模在以正确的方法管理大量数据方面起着至关重要的作用。方法学是A...

  编译器设计中的寄存器分配算法

📅  最后修改于: 2021-06-28 06:54:28        🧑  作者: Mango

寄存器分配是编译器最后阶段的重要方法。寄存器比高速缓存访问的速度更快。寄存器的大小小至数百Kb,因此必须使用最少数量的寄存器进行变量分配。有三种流行的寄存器分配算法。天真的寄存器分配线性扫描算法柴廷算法这些解释如下。1.天真的寄存器分配:天真的(否)寄存器分配是基于这样的假设,即变量存储在Main Memory中。我们不能直接对存储在主存储器中的变量执行操作。变量被移到寄存器中,从而允许使用ALU...

  编译器设计中的语言处理系统

📅  最后修改于: 2021-06-28 06:54:55        🧑  作者: Mango

介绍 :该计算机是软件和硬件的智能组合。硬件仅仅是机械设备,其功能正在由相关软件进行编译。硬件将指令视为电荷,这等效于软件编程中的二进制语言。二进制语言只有0和1。为了启发,硬件代码必须以二进制格式编写,即只是一系列的0和1。编写这样的代码对于计算机程序员而言是一项不便且复杂的任务,因此我们使用高级语言编写程序,这对于我们理解和记忆非常方便。然后,将这些程序输入到一系列设备和操作系统(OS)组件中...

  Lex Program检查有效的电子邮件

📅  最后修改于: 2021-06-28 06:55:13        🧑  作者: Mango

Lex是一个生成词法分析器的计算机程序。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。用于执行lex程序的命令为:让我们看一下lex程序来检查有效的电子邮件。例子:下面是实现:输出:想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。...

  歧义语法

📅  最后修改于: 2021-06-28 06:55:36        🧑  作者: Mango

您还可以阅读我们之前讨论的有关上下文无关文法的分类的文章。Çontext˚FREEģrammars(CFGS)被分类基于:派生树数字符串根据派生树数,CFG细分为两种类型:模棱两可的语法明确的语法模棱两可的语法:甲CFG是如果存在对于给定的输入字符串即超过一个派生树到所述暧昧,多于一个LEFT中号OSTderivationŤREE(LMDT)或R飞行中号OSTderivationŤREE(RMDT...

  Lex程序检查给定的字符串是否是回文

📅  最后修改于: 2021-06-28 06:55:56        🧑  作者: Mango

问题:编写一个Lex程序来检查给定的字符串是否是回文。解释:Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。说明:一个字符串被认为是回文如果反向字符串的是相同的字符串。例如,“ abba”是回文,但“ abbc”不是回文。例子:执行:输出:...

  为什么在编译器设计中先行而后行?

📅  最后修改于: 2021-06-28 06:56:21        🧑  作者: Mango

为什么要第一?在“语法分析简介”的上一篇文章中我们看到了回溯的需要,这实际上是一个复杂的实现过程。有一种更简单的方法来解决此问题:如果编译器会事先知道“应用生产规则时生成的字符串的第一个字符”是什么,并将其与看到的输入字符串的当前字符或标记进行比较,则可以明智地采用决定要应用哪种生产规则。让我们采用与上一篇文章相同的语法:因此,在上面的示例中,如果知道在读取输入字符串中的字符“ c”并应用S-> ...