《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集

编译原理复习总结(精华版) 笔记分两部分: ——第一部分是一些小知识点 ——第二部分对应了几个大题的解题模板 第一部分 这部分没什么顺序,比较零碎,只记录了我感觉比较重要的部分知识点 二义文法:对一部文法,如果至少存在一个句子,有两棵不同语法树,称该句子是二义性的,包含二义性的句子的文法称为二义文法。上下文无关文法是否具有二义性是不可判定的。但有些特殊的2型文法[例如LL(1)、LR(0)、LR(1)等文法]是先天无二义性的 NFA和DFA的主要区别在于:1)DFA没有输入空串之上的转换动作。2)对于DFA,一个特定的符号输. 阅读详情

《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集

转自:https://www.cnblogs.com/xpwi/p/10989762.html

主页:https://www.cnblogs.com/xpwi/

本笔记是对教材《编译原理》- 张晶老师版 做学习笔记。
本篇就是第 5 章的笔记。

(一)自底向上的语法分析概述

自底向上语法分析

自底向上语法分析从待输入的符号串开始,利用文法的产生式步步向上归约,试图归约到文法的开始符号。

从语法树的角度看

自底向上分析的过程是以输入符号串作为端末结点符号串,向着根结点的方向往上构造语法树,是开始符号正好是该语法树的根结点。

自底向上语法分析过程实际上是一个不断进行直接归约的过程

移进-规约大意:

用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶符号串形成可归约串时(某个产生式的右部时),即把这个可归约串替换成(归约成)该产生式的左部的非终结符。

自底向上语法分析法基本思想
自左向右地扫描输入符号串,一遍把输入符号逐个移进分析栈,一边检查分析栈的栈顶符号串是否已经形成了句柄(句柄就是每个产生式的右部),如果形成句柄就把栈顶符号串替换为相应产生式左部的非终结符号,这种替换就称规约,再根据规约后的新栈顶,继续扫描,移进,规约。

例题:移进-规约

题目:

给定文法 G[S]:
(1)S -> aABe
(2)A -> b
(3)A -> Abc
(4)B -> d

解析:
步骤: 1 2 3 4 5 6 7 8 9 10
动作: 进 进 归 进 进 归 进 归 进 归
a b (2) b c (3) d (4) e (1)

执行时,首先分析栈中会存放 # 到栈底,图上没有体现出来,应该在 a 的下面加上 #,将余留输入串最左边的字符放在分析栈栈首,此时栈中为 a,分析上面 4 句文法,文法的右部没有完全匹配的,所以没有构成句柄。

此时,继续移进第二个输入符号 b,此时栈顶的 b 与文法的(4)产生式的右部匹配,用 A -> b 规约,得到栈中为 aA

然后移进 b,c,用文法的(3)产生式进行规约。

直到最后 aABe,用产生式(1)规约出 S 开始符号,接受。

用表格表示:
在这里插入图片描述
(图片来自教材:《编译原理》张晶老师版)

用树型表示:
每一次规约就相当于构造一颗子树,指导输入串结束时,构造成整个语法树。
在这里插入图片描述
(图片来自教材:《编译原理》张晶老师版)

关于规范规约

首先,自底向上的分析的移进 - 规约过程是自顶向下最右推导的逆过程。

怎么理解呢?

最右推导是每次先推导最右边的非终结符,自顶向下的最右推导就是从开始符号开始,每次执行最右推导,推出输入符号串,最右推导是先推出输入串最右端的终结符,最后推出最左端的终结符。
那逆过程就是从输入符号串开始,每次先从最左端的终结符推导,最后推出开始符号。也就是自底向上的分析的移进 - 规约过程。

理解这句话之后,因为最右推导被称为规范推导,那么自左向右的规约则称为规范规约。

关于句柄

归约过程中,当句柄出现在栈顶符号串时,则用句柄归约。所以关键是在分析过程中如何确定句柄。

寻找句柄的方法不同,也就形成了不同的自底向上分析法。我们将介绍两种不同的方法,分别是优先分析法和 LR 分析法。

句柄就是每个产生式的右部。

句柄具有 “最左” 特征,这一点对于移进-归约过程很重要。

因为:句柄的 “最左” 性和符号栈的栈顶是相关的。对于规范句型来说,句柄的后面不会出现非终结符号(即,句柄的后面只能是终结符)。

基于这一点,我们可以用句柄来刻划 “可归约串”。因此,规范归约的实质是,在移进过程中,当发现栈顶呈现句柄时,就用相应产生式的左部符号进行替换。

优先分析法

优先分析法是在文法的一些符号之间建立所谓的优先关系,它又可以分为简单优先分析法 和 算符优先分析法

LR 分析法

根据分析过程中迄今已经取得的信息,并向前查看若干个输入符号来确定当前应采取的分析动作,及移进,规约,接受或报错。

可归约串

每实现异步规约都是把一串符号的用某个产生式的左部符号来代替,我们可以把栈顶上的这串符号成为 “可规约串”。事实上,存在种种不同的方法刻画 “可规约串”。

对这个概念的不同定义,也就形成了上述不同的自底向上的分析法。

  • 优先分析法
    • 简单优先分析法(句柄)
    • 算符优先分析法(最左素短语)
      即在 算符优先分析 中,我们用 “最左素短语” 来刻画 “可规约串”
  • LR分析法(句柄)

(二)短语,直接短语,句柄

还有一个概念需要理解,句型,一起看。

句型的短语,直接短语定义:

若 S 是文法 G 的开始符号,αβδ 是该文法的一个 句型(能通过这个文法推导出来),即 S =*> αβδ,其中 α,δ ∈ V*,β ∈ V+。

如果有 S =*> αβδ 且 A=+>β,其中 A ∈ VN,则称 β 是句型 αβδ 相对于非终结符 A 的 短语。

另外,如果满足 S=*>αβδ,且 A -> β 是文法 G 的一个产生式,则称 β 是句型 αβδ 相对于非终结符 A 的 直接短语。

句型的句柄定义:

在一个句型中可以有多个直接短语,位于句型 最左边的直接短语 就称为 句柄。

例题:找短语,直接短语,句柄

题目:

给定文法:
(1)T -> T*F
(2)F -> F↑P|P
(3)P -> (T)|a

对于句型 T*P↑(T*F)

解析:
(1)根据 T =*> T*P↑(T) 和 T =*> T*F(即产生式1),可知 T*F 是该句型的 相对于 T 的 直接短语。
(2)根据 T =*> T*P↑P(由产生式1和2推出) 和 P =*> (T*F)(由产生式1和3推出),可知 (T*F) 是该句型的 相对于 F 的短语。
(3)根据 T =*> T*F↑(T*F) 和 F => P,可知 P 是该句型的 相对于 F 的 直接短语。
(4)根据 T =*> T*F 和 F =*> P↑(T*F),可知 P↑(T*F) 是该句型的 相对于 F 的短语。
(5)根据 T =*> T 和 T =*> T*P↑(T*F),可知 T*P↑(T*F) 是该句型的 相对于 T 的 短语。

综上,T*P↑(T*F) 共有 5 个短语,其中两个是直接短语,由于直接短语 P 是句型的最左直接短语,所以 P 是句型的 句柄。

通俗的说一下,上面 5 个短语的两个条件能推出该句型,可以看出来。那么条件又是怎么来的呢?怎么知道怎么划分短语呢?这个就是通过句型和文法中个各个产生式来推,但这样很不直观,也容易漏。

怎么更快的找出所有短语,直接短语和句柄呢?

找出所有短语,直接短语和句柄,一种方法是根据定义寻找,显然,这种方法不直观,而且很难知道是否已穷尽所有情况;

另一种方法是利用语法树,首先为给定句型构造一颗语法树然后利用这棵语法树就可以找出该句型全部的短语,直接短语和句柄。

还对上题分析,使用语法树分析:

(图片来自教材:《编译原理》张晶老师版)

从底向上看,找子树

(1)T -> T*F
(2)P -> (T*F)
(3)F -> P
(4)F -> P↑(T*F)
(5)T -> T*P↑(T*F)

再根据文法中的产生式判断:

  • 直接短语(文法中包含产生式),有子树(1),子树(3),就是说他俩为直接短语
  • 句柄(最左直接短语),比较(1)和(3)谁在左边

对语法树的剪枝方法

(1)每个句型都有一个语法树
(2)每个语法树(整棵树)的端末结点自左向右排列就组成一个 句型
(3)每棵 子树的端末结点 自左向右排列就组成一个 短语
(4)每棵 简单子树的端末结点 自左向右排列就组成一个 直接短语
(5)最左简单子树的端末结点自左向右排列就组成一个 句柄


(三)简单优先分析法

优先分析法分为:

  • 简单优先分析法(句柄)
  • 算符优先分析法(最左素短语)

简单优先分析法是一种典型的 自底向上 的分析法,它符号串进行语法分析的过程是一个 规范规约 的过程。

它首先对文法 按一定规则 求出 所有符号(即终结符和非终结符) 之间的 优先关系,然后在分析过程中根据文法符号之间的 简单优先关系 来寻找符号串中可以进行规约的子串(即句柄)来进行规约。

简单优先文法

由于简单优先分析法是按照文法符号之间的 优先关系 来确定句柄的,所以首先要介绍两个文法符号之间存在的优先关系,然后介绍优先关系是 怎样确定的 和 如何构造关系表。

三种简单优先关系:

在简答优先文法中,两个文法符号之间可以是下述三种优先关系之一:
在这里插入图片描述
注意:

上面所引入的是三种优先关系都是对文法中的符号序偶来定义的,这三种关系和数学中的 =,<,> 不同,它们是有序的,就是不满足交换律,即
Si <· Sj 不一定有 Sj <· Si

详细:
(1)第一种关系 - Si 和 Sj 优先级相同
(2)第二种关系 - Si 的优先级低于 Sj
(3)第三种关系 - Si 的优先级高于 Sj
(4)第四种关系 - 不存在优先关系。这个上面没有体现。

例题:已知文法,求优先关系

题目:

给定文法:
(1)S -> (R)|A|∧
(2)R -> T
(3)T -> S,T|S

注意:(3)中的逗号是终结符

求文法符号之间的优先关系:

解析:
为了更好理解,直接上截图,注意逗号的理解,并列逗号和终结符中的逗号。

简单优先文法定义:

简单文法是满足以下条件的文法:
(1)在文法字汇表中,任意两个符号之间至多存在一种简单优先关系
(2)文法中的任意两个产生式没有相同的右部(唯一性)

简单优先关系矩阵

对上面例题,做出简单优先关系矩阵
在这里插入图片描述
(图片来自教材:《编译原理》张晶老师版)

简单优先分析法定义:

对简单优先文法的分析方法就是简单优先分析法。

简单优先分析法的局限性:

简单优先分析法只适应于简单优先文法。实际上,一般的程序设计语言的文法都不是简单优先文法。

所以,虽然简单优先分析法准确、规范,但分析效率较低,而且实际使用价值不大,更多可以看书,此处不再描述

(四)算符优先分析法

算符优先分析法是一种古典又实用的方法。

算符优先文法(OPG文法)定义

简单优先分析法 规定了文法符号间 (非终结符 VN 和终结符 VT) 的优先顺序和结合性质,然后借助这种优先关系和结合顺序来寻找可归约串(句柄)进行归约。

算符优先分析法 规定了算符间 (终结符 VT) 的优先顺序和结合性质,然后借助这种优先关系和结合顺序来寻找可归约串(最左素短语)进行归约。

通俗的说,算符优先分析法借助于终结符之间的优先关系确定可归约串。由于它不考虑非终结符之间的优先级关系,而且在规约过程中只要找到句柄就规约,并不考虑规约到哪个非终结符,因而算符优先规约并不是规范规约,确切的说,可规约串是最左素短语,而不是句柄。

特别有利于表达式分析,宜于手工实现。
但是它能力不强,仅能对算符优先文法进行分析。

算符优先分析法的分析过程是一种自下而上的归约过程,但这种归约未必是严格的最左归约。即 算符优先分析法不是一种规范归约法。

使用工具: 优先表、总控程序、栈

定义算符优先分析法前,先定义算法文法。

算符文法定义

若在上下文无关文法 G 中,不含 ε-产生式,且不含形如 U → …AB…的产生式,则称 G 为算符文法,也称 OG 文法 (Operater Grammar)

算符文法要满足:

  • 不含ε-产生式;
  • 产生式右部不包含两个相邻非终结符

算符优先分析法中,要利用 终结符 之间的 优先关系 来找出句柄,所以要先给出终结符之间存在的三种优先关系。
在这里插入图片描述
(图片来自教材:《编译原理》张晶老师版)

用语法树表示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例题:判断 G 是否是 OPG 文法

题目:

对于文法 G(E):
(1)E -> E+T|T
(2)T -> T*F|F
(3)F -> (E)|i

(1)判断 G 是否是 OG 文法(算符文法);
(2)再找出 G 中所有终结符对的优先关系;
(3)最后判断 G 是否是 OPG 文法(算符优先文法)

解析:
(1)判断 G 是否是 OG 文法(算符文法),根据算符文法要满足:

  • 不含ε-产生式;
  • 产生式右部不包含两个相邻非终结符

(2)再找出 G 中所有终结符对的优先关系,得出优先关系表

具体怎么构造关系表,在下面有提
在这里插入图片描述
(图片来自教材:《编译原理》张晶老师版)

(3)最后判断 G 是否是 OPG 文法(算符优先文法)

由于对于 G(E) 的任何终结符对(a,b)至多只有一种优先关系成立,即优先关系表中不存在多重入口,所以,文法 G(E) 是一个算符优先文法
在这里插入图片描述

优先关系表的构造

由定义构造缺乏可操作性。所以选择由算法构造。

为了找出所有优先关系,使得优先关系表没有疏漏,要对 G 的每个非终结符 T 构造两个集合:FIRSTVT集(最左终结符集),LASTVT集(最右终结符集)

FIRSTVT 集,LASTVT 集定义:
在这里插入图片描述

FIRSTVT(T) 的构造规则(必背)

(1)若有 T→a… 或 T→Ra…,则 a∈FIRSTVT(T);
(2)若 a∈FIRSTVT(R),且有产生式 T→R…,则 a∈FIRSTVT(T)

LASTVT(T) 的构造规则(必背)

(1)若有 T→a… 或 T→…aR,则 a∈LASTVT(T);
(2)若 a∈LASTVT(R),且有产生式 T→…R,则 a∈LASTVT(T)

例题:求 FIRSTVT,LASTVT 集

题目:

对于文法 G(E):
(1)E -> E+T|T
(2)T -> T*F|F
(3)F -> (E)|i

结果:
在这里插入图片描述
具体说一下怎么来的,
第一个 FIRSTVT(E) 集

  • 由文法(1)和规则(1)得出 + ∈ FIRSTVT(E)
  • 由文法(2)和规则(1)得出 * ∈ FIRSTVT(T)
  • 由文法(1)和规则(2)得出 * ∈ FIRSTVT(E)
  • 由文法(3)和规则(1)得出 ( ∈ FIRSTVT(F)
  • 由文法(2)和规则(2)得出 ( ∈ FIRSTVT(T)
  • 由文法(1)和规则(2)得出 ( ∈ FIRSTVT(E)
  • 由文法(3)和规则(1)得出 i ∈ FIRSTVT(F)
  • 由文法(2)和规则(2)得出 i ∈ FIRSTVT(T)
  • 由文法(1)和规则(2)得出 i ∈ FIRSTVT(E)i

上面为了容易理解,分开写,但不直观,同理也可以根据 LASTVT 集规则计算出 LASTVT 集。

素短语

在这里插入图片描述 素短语是满足下面条件的短语:

  • 至少包含一个终结符。
  • 该短语不再包含满足第一个条件的更小的短语。

最左素短语:

处于句型最左边的那个素短语

算符优先分析算法就是根据 最左素短语 的定理构造的

算符优先分析算法的实现

工作原理: 对当前句型不断寻找最左素短语进行归约的过程。寻找最左素短语时,首先找到最左素短语的末尾终结符,然后再向前搜索最左素短语的首终结符。
使用的数据结构: 栈,数组。
有关约定:#作为语句括号,视为终结符,其优先级最低。

算符优先分析的局限性

算符优先分析 比规范归约要快得多,因为它跳过了所有单个非终结符的归约。

忽略非终结符的归约 在归约过程中存在某种 危险性,可能导致把本来不是文法句子的输入串误认为是文法的句子,即会把错误的句子得到正确的归约。

总结

算符优先分析算法与简单优先分析算法的比较

两个算法类似,所不同的是 算符优先分析算法 每一步归约 不一定是规范归约,而是找出最左素短语进行归约,并且在寻找最左素短语的过程中,只比较终结符之间优先关系,不受非终结符的影响

比较表格:

-简单优先分析法算符优先分析法
语法分析类别自上而下分析自下而上分析
可规约串句柄最左素短语
确定可规约串的根据任意两文法符号之间的简单优先关系任意两终结符之间的算符优先关系
效率比较效率较低只考虑终结符,效率较高
算符优先系列之(一)Firstvt和Lastvt集 算符优先系列之(一)Firstvt和Lastvt集 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 学过编译原理的菊苣们都知道算符优先文法,作为一个有点深度的分析方法,我们怎么能只止步于理论呢,实践才是王道哦。 已知文法G[S]的表达式,计算G[S]的Firstvt和Lastvt。因为某些特殊的原因,我们在这规定一下输... 阅读详情

相关推荐

sdut 算符优先系列之(一)Firstvt和Lastvt集

学过编译原理的菊苣们都知道算符优先文法,作为一个有点深度的分析方法,我们怎么能只止步于理论呢,实践才是王道哦。 已知文法G[S]的表达式,计算G[S]的Firstvt和Lastvt。因为某些特殊的原因,我们在这规定一下输入输出格式。 例如: 已知文法G[S]为: S->a|@|(T) T->T,S|S 首先先把各条件语句按照从左到右从上到下的方式分解和输出 S->a S->@ S

公子世无双的博客 2137

《编译原理》求 FIRSTVT 集和 LASTVT 集的步骤 - 例题解析

求 FIRSTVT 集和 LASTVT 集的步骤及例题解析 算符优先关系表的构造中涉及到求 FIRSTVT 集和 LASTVT 集。 表示及含义: FIRSTVT(T) 非终结符T的最左终结符集合 LASTVT(T) 非终结符T的最右终结符集合 定义: 定义解释: FIRSTVT(T) 非终结符T经过1步或多步推导,得到的最左端终结符,以及左端第二个终结符的集合 ...

肖朋伟 2万+

Unity微信小游戏资源管理实战:YooAsset的Tag与Group策略精讲

本文深入解析了在Unity微信小游戏开发中,如何利用YooAsset的Tag与Group策略进行精细化资源管理。通过实战案例,详细阐述了如何通过Tag实现核心资源的必下与额外资源的按需加载,并借助Collector的合理打包策略,实现热更新包体最小化,从而有效解决加载慢、更新流量大的痛点,最终提升玩家体验。

weixin_29012677的博客 271

FIRSTVT和LASTVT的计算(很长但是很详细)

目录 1.定义 2.定义剖析与理解 (1)FIRSTVT(P) (2)LASTVT(P) 3.例题演示 (1)FIRSTVT的详细计算过程 1.第一遍扫描 2.第二遍扫描 3.第三遍扫描 4.第四遍扫描 5.第五遍扫描 (2)LASTVT的详细计算过程 1.定义 大家看完定义之后是不是觉得有点懵,这很正常,我们要利用定义做题的第一步就是理解定义。 笔者在这里先给大家抛个引子,我认为它们的计算与FOLLOW集的计算有类似之处(FOLLOW集的计算我在之...

qq_55168827的博客 1万+

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

在 SAP 中实现“租赁资产”管理,核心是把 IFRS16/ASC842 等新租赁准则的要求落地到系统

摘要:本文详细介绍了在SAP S/4HANA系统中实现IFRS16/ASC842租赁准则的具体操作流程。主要内容包括:1) 系统前置配置,如激活租赁会计组件、定义租赁类型和会计科目;2) 租赁合同创建与主数据维护;3) 初始确认的会计处理;4) 日常折旧计提和租金支付流程;5) 合同变更与终止管理。通过RE-FX-LM模块与固定资产模块的集成,系统可自动生成使用权资产和租赁负债,支持从合同创建到报表披露的全生命周期管理,确保符合新租赁准则要求。

金牌架构师 988

【20200422】编译原理课程课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表

【20200422】编译原理课程课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表 一、课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表 问题描述 题目解析 二、知识巩固 1、自下而上的语法分析 2、分析符号串是否为文法的句子实例 3、自下而上语法分析的策略 4、我们如何决定什么时候移进,什么时候规约? 5、关于短语、直接短语、句柄的定义 6、关于移进-归约冲突的产生&解决方法 7、简单优先分析法 8、算符优先分析法 9、算符文法(OG)& 算符优先文法

小啊呜的博客 9621

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展

推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,并由机器完成。召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。

丨汀、的博客 7595

自底向上构造语法分析树Java_《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集...

《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集本笔记是对教材《编译原理》- 张晶老师版 做学习笔记。本篇就是第 5 章的笔记。(一)自底向上的语法分析概述自底向上语法分析自底向上语法分析从待输入的符号串开始,利用文法的产生式步步向上归约,试图归约到文法的开始符号。从语法树的角度看自底向上分析的过程是以输入符号串作为端末结点符号串,向着根结点的方向往上构造语法树,是开始...

weixin_39711959的博客 1214

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

AI人人懂 947

openlayers全面教程306+【目录】

vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。

大剑师兰特的GIS世界 2万+

【编译原理】FIRSTVT和LASTVT求法

FIRSTVT 找FIRSTVT的三条规则:如果要找A的FIRSTVT,A的候选式中出现: A->a…,即以终结符开头,该终结符入FIRSTVT A->B…,即以非终结符开头,该非终结符的FIRSTVT入A的FIRSTVT A->Ba…,即以非终结符接终结符开头,则该终结符入FIRSTVT LASTVT 找LASTVT的三条规则:如果要找A的LASTVT,A的候选式中出现: A->…a,即以终结符结尾,该终结符入LASTVT A->…B,即以非终结符结尾,该非终结符的LASTV

TYPFOON的博客 1万+

YOLOv11涨点改进| CVPR 2026 |独家创新首发、特征融合改进篇| 引入FAAFusion傅里叶角对准融合模块,促进高低频特征融合,增强模型在小目标、密集目标检测和旋转目标检测任务高效涨点

🔥本文提出FAAFusion傅里叶角对准融合模块,用于改进YOLOv11网络模型。该模块通过在特征金字塔融合阶段对齐高低层特征的方向信息,缓解传统FPN直接融合带来的方向冲突问题。FAAFusion利用傅里叶旋转等变性原理,在频域估计主方向并进行特征对齐,显著提升了多尺度特征表达的一致性与有效性。实验表明,该方法在DOTA等遥感数据集上取得了新的最先进水平,特别适用于旋转目标检测任务。文章详细介绍了模块原理、结构优势,并提供了三种不同的YOLOv11改进配置方案和完整的核心代码实现。

Ai缝合怪、助力小伙伴高效发论文 154

<编译原理>——first集、follow集、firstvt集及lastvt集

之前自顶向下语法分析写了下怎么求first、follow集,这次写一下firstvt、lastvt的求法,顺便写写我对这四个集合的理解 先补充一下上篇博客: 我们知道,first集和follow集是用在自顶向下语法分析中。假如给定例子S->aA|bB|c,那么S被替换后,打头的字符可能是a、b或c;而形如S->Aa,A->b,这时候替换S后,打头的是非终结符A,替换A,得到b,也就是b

dala_da的博客 5613

上位机图像处理和嵌入式模块部署(qmacvisual入门)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 虽然我们前面学习了很多的知识点,比如说在windows这边,用qt写界面,用opencv写图像处理代码;在linux这边先用树莓派测试,最后再部署到自己的平台上面。但是,对于一个商业软件是怎么运行的,很多时候我们心理还是没有底,或者说,自己写的软件距离一个商业软件还有多远,大部分学习的同学是不知道的。 就算有的同学说,这个时候可以借鉴一下vision pro,或者是

嵌入式-老费,一个分享专业嵌入式知识的blog 1231

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

FIRSTVT和LASTVT白话版

FIRSTVT和LASTVT白话版 FIRSTVT集合 如:FIRSTVT®的集合为R推出的串中非终极符中出现的第一个终结符,如果第一个出现(A)为非终结符,则还需要查看这个非终结符(A)的的FIRSTVT(A)加入到FIRSTVT®中,一直到结束。 求FIRSTVT(R)的步骤: 1.对所有的R∈VN,若有产生式 R->a…或者R->Qa…则a∈FIRSTVT(R); 2.若a∈FIRSTVT(Q),且有产生式R->Q…,则把a加入FIRSTVT(R); 3.重复2一直到FIRSTVT

苏木的博客 3662

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

从零构建编译器:FIRSTVT与LASTVT集的实战应用与可视化解析

本文深入解析编译原理中的FIRSTVT与LASTVT集,通过Python实现自动化计算算法,并可视化展示算符优先关系的构建过程。从基础概念到实战应用,帮助开发者理解如何利用这些集合解决表达式优先级问题,提升编译器设计能力。

tgb345678的博客 688

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

根据相关算法对FIRSTVT或LASTVT进行求解(编译原理与技术)

通过实验,进一步掌握了文法的FIRSTVT和LASTVT集合的求解方法,为后续的语法分析器设计和实现提供了基础和指导。根据实验内容编写程序,上机调试、得出正确的运行程序,掌握FIRSTVT和LASTVT的求解方法,了解其求解过程。,即以非终结符开头,该非终结符的FIRSTVT入A的FIRSTVT;B,即以非终结符结尾,该非终结符的LASTVT入A的LASTVT;,即以非终结符接终结符开头,则该终结符入FIRSTVT。aB,即以终结符接非终结符结尾,则终结符入LASTVT。全局变量,用于存储每个非终结符的。

ha_ha_ha_wys的博客 1068

python带界面任意文法求FIRSTVT、LASTVT集和算符优先分析表

由于做课设的时候发现网上的代码都或多或少没有按照书上给出的求解思路导致我答辩差点团灭,所以写了这份代码给有需要的人。 求FIRSTVT和LASTVT集以及算符优先分析表的代码是完全按照陈火旺编译原理课本上给出的形式代码得来,有需要的小伙伴可以参考! 求FIRSTVT集算法: def getfirst(vt, non_vt): for a in non_vt: for b in vt: addtwodimdict(mapdict, a, b, False) .

A991124的博客 1396

编译原理----算符优先级的分析(自底向上)

编译原理----算符优先级的分析(自底向上)

weixin_69884785的博客 4153

编译原理中的符号博弈:揭秘FIRST集与FOLLOW集在语法分析中的协同机制

本文深入解析编译原理中FIRST集与FOLLOW集在语法分析中的协同机制,揭示它们如何解决语法歧义和产生式选择问题。通过对比LL(1)与算符优先分析法,展示FIRSTVT和LASTVT在自底向上分析中的关键作用,并提供工程实践中的解决方案,帮助开发者更好地理解和应用这些核心概念。

efc1234567的博客 736

编译原理:算符优先分析算法的设计与实现(含代码)

算符优先分析算法的设计与实现 写在最前面:我的编译原理学的不是很好,不怎么听课,所以我写代码的思路比较简单。简单的思路也就意味着代码很笨重,介意的话请点叉叉。如果有什么指教欢迎评论区留言。 一、实验目的 根据算符优先分析法,对表达式进行语法分析,使其能够判断一个表达式是否正确。 通过算符优先分析方法的实现,加深对自下而上语法分析方法的理解。 二、 实验内容 输入文法。可以是如下算术表达式的文法(你可以根据需要适当改变): E→E+T|E-T|T T→T*F|T/F|F F→(E)|i 对给定表达

俊夫小瞳的博客 2万+

算符优先文法优先关系表构造:4步算法解析与FIRSTVT/LASTVT集实战

本文详细解析了算符优先文法中优先关系表的构造方法,通过4步算法和FIRSTVT/LASTVT集实战,帮助开发者掌握自底向下优先分析的核心技术。文章包含代码实现和常见问题调试技巧,适用于编译原理学习和实践。

weixin_33552698的博客 305
上一篇: 编译原理:短语、直接短语、句柄、素短语
下一篇: 语法推导树之短语,直接短语,句柄
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值