首页 > 其他分享 >推导(Derivation)和归约(Reduction)

推导(Derivation)和归约(Reduction)

时间:2024-02-19 17:45:53浏览次数:19  
标签:文法 终结符 Derivation 推导 Reduction 归约 字符串

目录


在编译原理中,推导(Derivation)和归约(Reduction,有时也称为规约)是两个核心概念,用于描述如何根据形式文法的规则来生成或识别字符串。它们是基于形式语言理论中的上下文无关文法(Context-Free Grammars, CFGs)进行的操作。


推导(Derivation)

推导是从文法的初始符号(通常是起始非终结符)开始,通过反复应用文法的产生式规则,最终生成一个只包含终结符的字符串的过程。每一步推导都涉及将某个非终结符替换为其产生式右侧的内容。

例如,如果有产生式 A -> BC,且当前字符串中包含非终结符 A,那么可以将 A 替换为 BC,从而进行一步推导。

推导通常分为最左推导和最右推导,取决于替换的非终结符在字符串中的位置。最左推导每次替换最左边的非终结符,而最右推导则替换最右边的非终结符。最右推导也称为规范推导(Canonical Derivation),在某些类型的解析算法(如LR解析)中特别重要。


归约(Reduction)

归约是推导的逆过程。它从包含终结符和非终结符的字符串开始,通过反向应用文法的产生式规则,逐步将字符串归约为文法的初始符号。每一步归约都涉及将产生式右侧的内容替换为其左侧的非终结符。

继续上面的例子,如果有产生式 A -> BC 且当前字符串中包含子串 BC,那么可以将 BC 归约为 A,从而进行一步归约。

同样地,归约也分为最左归约和最右归约,取决于被归约的子串在字符串中的位置。最左归约每次归约最左边的可归约子串,而最右归约则归约最右边的子串。最左归约在某些解析算法(如预测解析)中特别重要。


在实际的编译过程中,推导和归约是语法分析器(Parser)工作的基础。语法分析器通常使用推导来生成可能的解析树(Parse Trees),并使用归约来从多个可能的解析中选择一个正确的或最优的解析。这两个过程共同确保了编译器能够正确理解和处理源代码的语法结构。

参考

标签:文法,终结符,Derivation,推导,Reduction,归约,字符串
From: https://www.cnblogs.com/yubo-guan/p/18021601

相关文章

  • Flink之状态编程 值状态(ValueState)列表状态(ListState)映射状态(MapState)归约状态(Reducin
    Flink之状态编程值状态(ValueState)列表状态(ListState)映射状态(MapState)归约状态(ReducingState)聚合状态(AggregatingState)广播状态(BroadcastState)Flink之状态编程一、按键分区状态(KeyedState)1.1、值状态(ValueState)1.1.1、定义1.1.2、使用案例1.2、列表状态(ListState)1.2.1......
  • PBKDF2(Password-Based Key Derivation Function 2)算法
    一、引言在当今数字时代,保护用户数据和隐私的安全变得越来越重要。为实现这一目标,加密和密钥管理技术发挥着关键作用。PBKDF2(Password-BasedKeyDerivationFunction2)算法作为一种基于密码的密钥生成方法,广泛应用于各种安全场景。本文将从各个方面介绍和解释PBKDF2算法,剖......
  • 多因子降维法 multifactor dimensionality reduction MDR
    MDR的应用:在病例对照研究中,应用多因子降维法(MDR)分析基因-基因交互作用,较传统的统计学分析方法无法比拟的优势。Logistic回归的局限性理论上的不足:自变量对疾病的影响是独立的,但实际情况及推导结果不同。模型有不合理性:“乘法模型”与一般希望的“相加模型”相矛盾。最大似然......
  • Security Reduction学习笔记(2):预备知识(群环域,双线性配对,哈希函数)
    省略部分可参考密码协议学习笔记(1.4):密码学的一些数学基础-Isakovsky-博客园(cnblogs.com)有限域:$\mathbb{F}$是有限个元素的集合若$(\mathbb{F},+,*)$满足某些条件(条件略),则称其为有限域(FiniteField,或称Galois域)其零元,单位元分别记为$0_{\mathbb{F}},1_{\mat......
  • Security Reduction学习笔记(1):密码系统与安全模型的定义
    课件地址:Book(uow.edu.au),原作者声明该课件对人类和外星人免费开放( ̄_ ̄||)现代密码学概念:现代密码学与经典密码学的区别在于它强调定义(definitions)、模型(models)和证明(proofs).定义澄清:密码学(Cryptology)=设计密码学(Cryptography)+分析密码学(Cryptanalysis)密码......
  • Field Reduction USACO - 641
    题目链接:http://www.usaco.org/index.php?page=viewproblem2&cpid=641&lang=en题意:有n(3<n<50000)头牛你需要给这n头牛建造围栏。坐标范围1-40,000。围栏的面积越小越好。你需要删除1头牛来减小围栏面积思路:1.因为只能删除1头牛来减少围栏面积,所以只能删除最靠边缘的牛,否则......
  • OpenMP 归约和reduction子句
    简述归约归约操作在MPI里也学过,不过那时候还不太熟悉这种操作。当时只知道MPI_Reduce可以把全局求和和集合通信封装起来,非常方便。实际上将相同的二元归约操作符重复地应用到一个序列上得到结果的计算过程都可以称为归约。python里那个难理解的reduce()函数也就是归约:1......
  • Number Reduction
    NumberReduction题意删除k位数,让原本的数变得最小(不含前导零)思路看官方题解学会的。记录每种数字出现的位置,原本有n位,那结果就有n-k位,一位位枚举,然后尽量放小的数,除了第一位不能放0,其他有0就放0。为什么vector可以用得这么6啊代码voidsolve(){ stringx; cin>>x; ci......
  • Fine-Grained学习笔记(5):(min+)卷积及背包问题的复杂度归约理论
    (min,+)卷积问题:给定$a_0,\cdots,a_{n-1},b_0,\cdots,b_{n-1}$,计算$c_k=min_i(a_i+b_{k-i})$全局决定性问题版本:给定$a_0,\cdots,a_{n-1},b_0,\cdots,b_{n-1}$,$c_0,\cdots,c_{2n-2}$,对于所有$k$,判断是否$\existsi,a_i+b_{k-i}<c_k$单解问题版本:给定$a_0,\cdots,a_......
  • Fine-Grained学习笔记(4):条件下界与归约,图论问题的复杂度归约理论
    和P与NP问题一样,Fine-Grained领域中的许多问题也能相互归约,这意味着当这些问题中的任意一个问题的复杂度下界得到了证明或证伪,那么一系列问题的复杂度下界就都能够得到解决.APSP猜想:不存在$O(|V|^{3-\delta})$时间的(对于任意实数边权图都有效的)(确定性的)APSP算法.APSP猜......