编译原理求FIRST集、FOLLOW集和SELECT集

编译原理:FIRST集、FOLLOW集、SELECT集的求法及LL(1)文法的判定——篇③SELECT集的求法及LL(1)文法的判定 编译原理:FIRST集、FOLLOW集、SELECT集的求法及LL(1)文法的判定——篇③SELECT集的求法及LL(1)文法的判定 FIRST集的求法见添加链接描述 FOLLOW集的求法见添加链接描述 SELECT集 对于产生式A—>α,集合select(A—>α)定义如下: 若α不能推出ε,则select(A—>α) = first(α)。 若α能推出ε,则select(A... 阅读详情

所有大写字母代表非终结符,小写字母代表终结符,省略号代表未知数目(可能为0)的不确定类型的文法符号。

First集合:


First集合顾名思义就是求一个文法符号串所可能推导出的符号串的第一个终结符的集合。

First(X)就是求X所有推导出的符号串的第一个符号的集合。

求First集合可分如下几种情况:

1、单个符号的First集合:单个终结符的First集合就是它自己。

2、单个非终结符的First集合:

A-->a… 产生式右部以终结符开头,根据定义,这种情况下显然可以看出a属于First(A)。

A-->B… 产生式右部以非终结符开头,根据定义,既然可以把A替换成B……,也可以看出First(B)属于First(A)。这是一个递归的推导。

 

3、多个符号形成的符号串的First结合:

符号串ABC…,并且A不能推导出空串ε,显然根据定义First(ABC…)=First(A)

 

符号串ABC…,并且A可能推导出空串ε,当A不是空串的时候,显然First(A)属于First(ABC…),但当A是空串的时候,ABC…就成了BC…,此时根据B是否能推出空串来决定是否将First(B)加入First (ABC…)。这是一个递归的推导,综上所述,符号串中的第一个不能推出空串的符 号前面所有符号的First集合减去空串ε都属于First(ABC…),第一个不能推出空串的 符号的First集合也属于First(ABC…)。也就是假设A、B都可以推出空串,C不能推 出空串,First(ABC…)=First(A)-ε∪First(B)-ε∪First(C)。

 

注意:First集合中的符号一定是终结符,终结符也包括空串ε。

A–>…UP… 要求的Follow集合的非终结符后跟非终结符

 

Follow集合:


Follow集合也是顾名思义的,就是文法符号后面可能跟随的终结符的集合(不包括空 串ε)。

Follow(X)就是求X后面可能跟随的符号集合。

求Follow集合可分如下几种情况:

终结符的Follow集合没有定义,只有非终结符才会有Follow集合。

 

 

A–>…Ua… 要求的Follow集合的非终结符后跟终结符

根据定义,显然a属于Follow(U)。这种情况下,Follow(U)和A没有任何关系,产 生式左边是什么无所谓。

 

A–>…UP… 要求的Follow集合的非终结符后跟非终结符

根据定义,显然P的第一个符号属于Follow(U),也就是First(P)属于Follow(U)。

 

A–>…UP并且ε属于First(P) 要求的Follow集合的非终结符后跟非结尾的终结符, 并且结尾非终结符的First集合包含空串。

这是上一种情况的一种特例,除了要按上一种情况处理,First(P)属于Follow(U) 以外还要进行分析;因为当P推导为空串时,空串不能出现在Follow集合中,所以U 后面跟随的应该是P后面的东西,可P已经是结束的符号,此时U后面显然就是A后 面跟随的东西了。所以在这种情况下Follow(A)也属于Follow(U)。

 

A–>…U 要求的Follow集合的非终结符在产生式结尾

这时候又要递归推导,U是A的结尾,所以U后面跟随的东西也就是A后面跟随的东 西。所以Follow(A)属于Follow(U)。

 

注意:Follow集合中的符号一定是终结符,并且不能包括空串ε,而且定义开始符号 的Follow集合初始为{#(句子括号)}。

 

Select集合:


Select集合就是产生式左部的可能的推导结果的起始符号。

Select(A–>B)就是求这个产生式中A可能推导出起始符号集合(不包含空串ε)。

求Select集合可分如下几种情况:

A–>X (X为任意文法符号串,不限于非终结符或单个符号),并且X不能推导出空串 ε

根据定义,显然A推出的符号串起始就是X的起始,也就是First(X).

Select(A–>X)= First(X)

A–>X (X为任意文法符号串,不限于非终结符或单个符号),并且X能推导出空串ε

根据定义,显然First(X)属于Select(A–>X),此外,当X推导为空串时,显然A 也推导为空串,那么此时推导出的符号串就会是A后面的符号的推导结果。也就是 Follow(A),所以,此时Follow(A)也属于Select(A–>X)。

注意:Select集合中不包括空串ε,但有可能会包含#(句子括号)。

 

举个例子:


S→AB

S→bC

A→ε

A→b

B→ε

B→aD

C→AD

C→b

D→aS

D→c

求他的first,follow,select

先求First集


  • First(S) =(First(A)-{ε})∪(First (B)-{ε}) ∪{ε}∪{b} ={a,b,ε}

     


因为A的first有ε,B的first有ε,S->AB,所以是First(A)-{ε})∪(First (B)-{ε}) ∪{ε},然后S->bC,所以再加一个b,就是First(A)-{ε})∪(First (B)-{ε}) ∪{ε}∪{b},


  • First (A)={b, ε}

     


没什么好解释的


  • First (B)={a, ε}

     


ε不用解释,就是B->ε,所以有他,a就是因为B->aD,第一个非终结符是a所以有a,那要不要加上D的first呢,就是a和c,答案是不用,就只要aD里面的a就可以


  • First (C)={a,b,c}

     


C->AD这一句,AD都是非终结符,所以要找A和D的first集,D的是a,c,A的是b,ε,因为不是AD同时都能推出ε所以C的first是A和D的first的并集减去ε,还要加上b,因为有C->b这一句


  • First (D)={a,c}

     


D->c不用解释,D->aS这一句,不用加上S的first!!!

 

First (AB)={a,b,ε}

First (bB)={b}

First (ε)={ε}

First (b)={b}

First (aD)={a}

First (AD)={a,b,c}

First (aS)={a}

First (c)={c}

AB同时能够推出ε,所以first(AB)就是A和B的first的并集减去ε再并上ε

bB的first就是b,不用加上B的first

ε的就是ε,b就是b,c就是c,只有一个终结符ε没什么好说的

一个终结符和一个非终结符的,就要那个终结符就可以,不用管后面那个非终结符,

两个非终结符的要看是不是他们两个同时能推出ε,能就有ε,要是有一个不能推出ε,那first集就没有ε

AB有ε是因为AB都能推出ε,AD没有是因为A能D不能推出ε

以上first集就求完了,是不是很简单,我搞了一上午。。。

 

接下来求follow集

从开始符号S开始推倒,开始符号的follow里面一定要有#,

所以开始符号的S的follow集要有#,

follow是找->后面的,比如找S的follow,就要看谁的->后面有S,D->aS里面有S,然后在看D->aS的S后面有没有别的符号,没有就加上D的follow集,如果有,就加上后面那个字母的first集里面除了ε以外的符号,在看这个字母能不能推出ε,如果能,就再加上->左边的那个字母的follow

看A的follow,首先找所有->后面有A的,找到了S->AB,C->AD,先看S->AB,A后面有B,所以要加上B的first集里面除了ε的其他符号,再看B能不能在有限的步骤里推出ε,有B->ε这句,所以能,就要再加上->左边的S的follow集,所以目前的A的follow集里面有a,和follow(S),再看C->AD这一句,A后面有D,所以要加上D的first集里面除了ε的其他的,再看B能不能在有限的步骤里推出ε,D不能,所以不用加->左边的C的follow,所以A的follow就是a,follow(S),a,c,但是如果有重复的,就只要一个,所以最终就是a,c,follow(S),这个follow(S)到后面还要算出来的,不能就这样写

看B的follow,找所有->后面有B的,找到了S->AB,看B后面有字母吗?没有,就加上->左边的S的follow,所以follow(B)=follow(S)

看C的follow,找所有->后面有C的,找到了S-bC,看C后面有字母吗?没有,就加上->左边的S的follow集,所以follow(C)=follow(S)

看D的follow,找所有->后面有D的,找到了B->aD。C->AD,这两句D后面都没有字母,所以加上->左边的B和C的follow,所以follow(D)=follow(B)并上follow(C)

最终要把以上的follow都求出来,看

follow(S)=#+follow(D),

follow(D)=follow(B)+follow(C),

所以follow(S)=#+follow(B)+follow(C),

follow(B)=follow(S),

follow(C)=follow(S)

所以follow(S)=#+follow(S)+follow(S),

所以follow(S)就是#,

follow(B),follow(C),follow(D)也都是#,

所以follow(A)就是ac,#,求完了,以上所有的+代表求并集

 

再看select怎么求

对于A->a,

如果a≠>ε,那么select(A->a)=first(a),

如果a=*>,那么select(A->a)就是first(a)-ε+follow(A)

看select(S->AB),AB都能推出ε,所以select(S->AB)=first(AB)-ε+follow(S)所以结果是a,b,#

看select(S->bC),bC不能推出ε,所以是first(bC),结果是b

看select(A->ε),A能推出ε所以是first(ε)-ε+follow(A)结果a,c,#

看select(A->b),这里的A是推出b不是ε所以是first(b),结果是b

看select(B->ε),B能推出ε,所以是first(ε)-ε+follow(B),结果是#

看select(B->aD),这里B不能推出ε,所以是first(aD),结果是a

看select(C->AD),这里D不能推出ε,所以算AD不能推出ε,就是first(AD),结果是a,b,c

看select(C->b),C推不出看ε,所以是first(b),结果是b

看select(D->aS),这里不能推出ε,所以是first(aS),结果是a

看select(D->c),这里D不能推出ε,所以是first(c),结果是c

LL(1)文法

是自顶向下分析,从左到右扫描输入串,最左推导,只需向右看一个符号就可以决定如何推倒

LL(1)文法满足条件:左部相同的产生式的select集的交集为空,并且产生式的右部不能同时推导出ε,那么这个文法是LL(1)文法,否则不是

上面的文法select(C->AD)和select(C->b)的交集是b不是空,select(S->AB)和select(S->bC)的交集也是b不是空,所以这不是一个LL(1)文法

 


 

原文地址:

https://blog.youkuaiyun.com/u014374031/article/details/50239667

https://blog.youkuaiyun.com/luobida222/article/details/73542851

编译原理——语法分析(FIRST集、FOLLOW集、LL(1)文法、预测分析表的构造) 初学编译原理的知识觉得很琐碎也很艰涩,今天在做作业之前,把语法分析这一章节的内容进行了一次梳理,把这部分内容终于串起来了,趁热打铁写下这篇博文。 全文分成如下板块: 什么是语法分析器 语法分析中可能存在的问题 如何解决这些问题(LL(1)文法) 如何构造预测分析表 1.什么是语法分析器? 先上一张图,虽然不太清晰,但大致能够看出语法分析器在编译程序中的位置。说白了,它就是按文法的产生式,识别输入串是否为一个句子。 可以简单地将语法分析分为自上而下的语法分析与自下而上的语法分析。 而在由开始字符推导出最 阅读详情

相关推荐

编译原理:FIRST集、FOLLOW集、SELECT集的求法及LL(1)文法的判定——篇②FOLLOW集的求法

编译原理:FIRST集、FOLLOW集、SELECT集的求法及LL(1)文法的判定 FIRST集求法参照篇①添加链接描述 本篇参考链接:添加链接描述 FOLLOW集 ① FOLLOW(A)可能在某个句型中紧跟在A后边的终结符的集合,若A是某句型的最右符号,则将结束符#添加到 FOLLOW(A)中。 ②若存在A→αBβ,那么FIRST(β)中除ε之外的所有符号放入FOLLOW(B); 若存在A→α...

weixin_42486694的博客 2690

求SELECT集,改写文法,写预测分析表

SELECT集和之前讲过的FIRST集和FOLLOW集有些不同。 给出文法如下: S->ABc A->a|ε B->b|ε 我们可以求FOLLOW(S)或者FOLLOW(ABc),同样也可以求FIRST(S),FIRST(ABc)。 但是不能求SELECT(S),SELECT(ABc)这种形式,这是不对的。应该写成SELECT(S->ABc)。 所以不同点就是,FOLLOW集和FIRST集是对产生式箭头的左部或右部进行求解;而SELECT集是对整个产生式进行求解。 同样,还是先讲.

此用户不懒,但懒得写简介 8553

编译原理之NULL集、first、follow集C语言实现

编译原理之NULL集、first、follow集C语言实现,实现中句子的转换符号由‘#’代替,数组默认由‘*’作为结束符

编译原理 —— SELECT集

SELECT集 产生式 A→αA → αA→α 的可选集是指可以选用该产生式进行推导的输入符号的集合,记为SELECT(A→α)SELECT(A→α)SELECT(A→α) 同一非终结符的各个产生式的可选集互不相交(否则依然无法确定使用哪一个产生式) 计算产生式的SELECT集 对于产生式①,FIRST(TE′)={(,id}(TE')=\{ (,id \}(TE′)...

starter_____的博客 2万+

300个fpga练手项目推荐

• 按键设置BPM,LED和蜂鸣器同步打拍(支持4/4、3/4拍)• 例:先实现DDR3控制器(基础),再构建视频处理流水线(集成)◦ 驱动小型e-Paper显示日期/时间(SPI接口,静态刷新)◦ 音频输入经FFT后,用LED柱状显示频率能量(8频段简化)◦ 通过HC-05模块接收手机指令,控制电机方向(前进/后退)• 随机点亮LED,用按钮响应,数码管显示反应时间(毫秒级)• 8个LED旋转闪烁,按钮停止后显示中奖编号(带减速动画)• 用4方向按键输入手势(如→→←↑),正确后点亮绿色LED。

qq_62784677的博客 7641

2017年电赛题目-自适应滤波器

电赛题目解析之自适应滤波器 首先来看看题目: 2017全国大学生电子设计竞赛题目 这道题有很多发挥空间,本文将介绍三种电路: 数字电位器移相模拟电路 压控移相模拟电路 数字方法 一、数字电位器移相模拟电路 对于前级的加法器比较简单,这里贴出一种使用OPA209实现的常规做法: 输入端分别输入A信号和B信号就可以实现A+B,因为信号频率很低不涉及到阻抗匹配问题,所以这种接法没............

电气小能手的博客 2万+

编译原理-自顶向下语法分析之求First集、Follow集和Select集

设G=(VT,VN,S,P)是上下文无关文法,FIRSTα()={a|α⇒aβ,a∈VT,α , β∈V*}若α⇒ε,则规定ε∈FRIST(α)

2301_77207297的博客 1368

Starlink第三代终端和第二代终端的差异性有哪些?

starlink第三代终端和第二代终端的额差异

chen2jiang3的博客 2928

怎么求编译原理自顶向下分析的first集follow集和select

期末复习中,编译原理要搞死我了。。。。 在被编译原理搞死之前,我要搞死编译原理。。。。 求First(x)的算法: 若x∈VT ,则first(x)={x} 若X∈VN ,且有产生式 Xa… , a∈VT ,则a∈first(X) 若X∈VN ,xε,则ε∈first(X) 若X∈VN ,且有产生式 XY1Y2…Yn ,其中Y1,Y2,… Yn都∈VN 当Y1,Y2,… Yi-

luobida222的专栏 1万+

混合整数规划(MIP)在资源优化中的实战应用

本文深入探讨了混合整数规划(MIP)在资源优化中的实战应用,从菜市场采购到工厂调度,再到物流配送和钢铁厂切割问题。通过分支定界法和割平面法等技术,MIP能够有效解决包含整数和连续变量的复杂优化问题,提升企业运营效率。文章还介绍了现代求解器的优化策略和实际项目中的避坑指南,帮助读者更好地应用MIP技术。

weixin_30500105的博客 91

2024年游戏策划最新面试题及答案

1. **游戏策划**:负责游戏设计和开发的创意和技术过程。2. **主要职责**:设计游戏玩法、故事、角色、世界等。4. **游戏机制**:定义玩家如何与游戏世界互动的规则。13. **引人入胜的角色**:深入的背景故事、个性特征。3. **游戏平衡**:确保游戏公平、有趣且具有挑战性。7. **RPG特点**:角色发展、故事驱动、玩家选择。12. **关卡设计技巧**:挑战性、流动性、视觉引导。11. **游戏关卡设计**:创建游戏世界的不同阶段。5. **游戏循环**:玩家在游戏中重复的行为模式。

guo162308的博客 2320

(编译原理)求LL1语法分析中的FIRST集、FOLLOW集和SELECT集

编译原理的语法分析分为两大类:自顶向下和自底向上 对于LL1分析: 感觉LL1分析的重点在于构造预测分析表(废话,每个文法分析的重点都是预测分析表的构造QAQ) 那么,为了成功构造出预测分析表,我们需要计算出FIRST集、FOLLOW集以及SELECT集;这三个集合的定义这里不再粘贴(书上有十分专(nan)业(dong)的定义),只写一下如何计算以及我的理解(刚刚了解编译原理,如有不对还请指正...

hhh 1万+

智能门禁:AI Agent的访客意图识别

随着人工智能技术的飞速发展,智能门禁系统已经成为现代安全管理的关键环节。本文深入探讨了AI Agent在访客意图识别中的应用,通过详细的分析和实例讲解,揭示了智能门禁系统的核心工作原理、算法实现及其在安全领域的重要作用。文章结构清晰,逻辑严谨,旨在为广大技术爱好者提供一次全面的技术盛宴。在当今社会,门禁系统已成为各类建筑和机构不可或缺的安全设施。随着信息安全意识的增强,传统门禁系统的局限性逐渐显现。例如,在访客管理方面,传统方法通常依赖于人工登记、身份验证等手段,不仅效率低下,而且容易出现漏洞。

AI架构师小马 711

《编译原理》构造 LL(1) 分析表的步骤 - 例题解析

构造 LL(1) 分析表的步骤与例题解析 易错点及扩展: 1、求每个产生式的 SELECT 集 2、注意区分是对谁 FIRST 集 FOLLOW 集 3、开始符号的 FOLLOW 集包含 # 4、各集合对对应的对象以及含义 集 对象 含义 FIRST 集 是对产生式右部 右部内部的所有终结符集,可能为 ε FOLLOW 集 是对产生式左部(非终结符) 非终结符后面紧跟的终结符,...

肖朋伟 1万+

基于深度学习的番茄成熟度检测系统——YOLOv5、YOLOv8、YOLOv10及UI界面的实现

YOLO是一种快速且准确的目标检测模型,近年来,YOLOv5、YOLOv8和YOLOv10作为YOLO系列的重要版本,分别在速度、精度和效率上进行了优化。下面我们简要介绍这些模型。本文介绍了如何基于YOLOv5、YOLOv8和YOLOv10等深度学习模型,结合PyQt5设计一个番茄成熟度检测系统。通过训练模型、优化算法和设计用户友好的界面,我们能够构建一个高效且准确的番茄成熟度检测系统,广泛应用于农业自动化和智能化管理中。

YOLO 1002

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

全网最清楚的自上而下的语法分析代码(LL1文法判断)

FirstFirstFirst集合简单的来说就是箭头右侧首个终结符的集合FollowFollowFollow集就是求出这个非终结符后面能跟些什么终结符。SelectSelectSelect集合和之前的FollowFollowFollow和FirstFirstFirst不同.SelectSelectSelect集合的目标是产生式而不是非终结符.简而言之我们求的是而不是Select(S)

qq_30108019的博客 1694

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

FIRST集、FOLLOW集、SELECT集求解

本文图片来自百度搜索 步骤1:求出所有能推出 ε的非终结符 步骤2:计算FIRST集 步骤3:计算FOLLOW集合 步骤4:由SELECT集的定义,借助FIRST集和FOLLOW集显然容易求得 ...

ccnuacmhdu的博客 1707

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【编译原理】一篇搞定First集、Follow集与select集(超详细)

思考回溯算法的问题——随意选择文法产生式作为操作。 想要不是随便选择,而是有目的性的选择就需要 考察后面输入的值是什么。 这也就是为什么这类算法叫做预测分析(考察下一位是什么,然后预测哪个产生式可能性高)~~ 基本思想:采用深度优先策略构建解析树,每次为非终结符号选择适当的产生式,以避免回溯。具体实现上通过向前查看输入中的一个或多个尚未被匹配的终结符来选定产生式。 对于非左递归文法,因不再回溯所以速度更快;但是仍存在无法处理的文法(例如左递归文法)。 考虑通过向前查看一个输入符号就能用预测分析算法

十二月的猫 5028

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

编译原理之first集 & follow集 & select集 详解

编译原理之first集 & follow集 & select集 详解 一、first集,follow集,以及select集求法解析 二、例子详解 1、关于first集: 2、关于follow集: 3、关于select集: 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

小啊呜的博客 9374

编译原理 First集 Follow集 select集 通俗易懂的讲解 + 实例

First集Follow集通俗易懂的讲解加实例First 如A->aB | CD 这里面包含了组成First(A)的两种情况: 以终结符开头,当然要把这个终结符(a)放到A的First里 以非终结符开头,先把C的First放到A的First里再看如果C的First中有空(∈)的话就把D的First放到A的First里(因为如果C的First为空,那么D的First就有可能紧挨

CooperNiu's Blog 3万+

编译原理之first集,follow集,select集解析

为了方便自顶向下语法分析,需要求文法对应的first集,follow集,以及select集。本文主要分为两部分,一个是求法解析,还有一个例子详解:第一部分是求法解析将对first集,follow集,select集分为三种讲解方法①定义介绍及推导②简单推导演示③规范式推导讲解顺序为,先用最简单的推导介绍三种不同的集,然后介绍概念,最后介绍正规的推导方法三种方法,不同人喜欢不同的理解方法,大家都可以参...

何小杰的博客 3万+

First集 Follow集 Select集 知识点+例题

最近学习到First集 Follow集 Select集感到比较困难,查询了多篇文章,做下此学习笔记 整合了下面多篇大佬文章,在此做学习笔记记录: first集&follow集&select集. [编译原理]FIRST集合FOLLOW集的介绍和求解. 编译原理 First集 Follow集 select集 通俗易懂的讲解 + 实例. 正文开始 一些符号和定义:一般大写字母表示非终结符,小写字母表示终结符。文法式一套有限的规则,可以创建无限符合此规则的句子。 First 集 定义:FIRST(

wzy1120433847的博客 6349

《编译原理》-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法

《编译原理》-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 本笔记是对教材《编译原理》-张晶老师版 做学习笔记。 最近在学《编译原理》,前三章感觉还可以理解,到了第四章就感觉这难度就上来了,于是想做个笔记, (一)前言 第4章 - 自顶向下的语法分析 自顶向下分析法就是从文法的开始符号出发,不断建立直接推导,试图构造一个最左推导序列,最终由它推导出与输入符号串完全匹配(相同...

肖朋伟 1万+
上一篇: CPU的基本功能和结构
下一篇: 信号量机制(PV操作)
黄色猴子
博客等级 码龄7年 87粉丝 104原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值