<编译原理>——first集、follow集、firstvt集及lastvt集
来源:互联网 发布:android 解析json数据 编辑:程序博客网 时间:2024/06/16 08:22
之前自顶向下语法分析写了下怎么求first、follow集,这次写一下firstvt、lastvt的求法,顺便写写我对这四个集合的理解
先补充一下上篇博客:
我们知道,first集和follow集是用在自顶向下语法分析中。假如给定例子S->aA|bB|c,那么S被替换后,打头的字符可能是a、b或c;而形如S->Aa,A->b,这时候替换S后,打头的是非终结符A,替换A,得到b,也就是b成为了S的打头。这里需注意的是如果有A->空,那么这时候a也有可能成为打头的。所以我的理解,first集为非终结符所有可能的打头非终结符。而follow集不是非终结符的最末尾非终结符,而是非终结符下一位的终结符。
Firstvt集的求法
有三条规则(1)A->a.......,即以终结符开头,该终结符入Firstvt(2)A->B.......,即以非终结符开头,该非终结符的Firstvt入A的Firstvt(3)A->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入Firstvt
Lastvt集的求法
也有三条规则:(1)A->.......a,即以终结符结尾,该终结符入Lastvt(2)A->.......B,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt(3)A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt
Firstvt集和Lastvt集主要用在自底向上语法分析,这时候要考虑一个问题。比如说读入3+3*3,这里的+和*优先级未知,那读到3+3的时候,是进行规约还是继续读入就涉及到优先级的问题,Firstvt集和lastvt集的作用就在于此。
比如说S->aA,A->b 那么S的firstvt集为a,A的为b,对于S->aA来说A的firstvt集中所有元素其优先级都高于a;同理对于某非终结符的lastvt集,集中的所有元素的优先级高于非终结符后跟的终结符
- <编译原理>——first集、follow集、firstvt集及lastvt集
- First,Follow,Firstvt和Lastvt (编译原理)
- 编译原理--First,Follow,Firstvt和Lastvt
- FIRST集和FOLLOW集,FIRSTVT集和LASTVT集总结
- First集和Follow集,FirstVt集和LastVt集的计算
- 混乱的First,Follow,Firstvt和Lastvt
- 编译原理-First集和Follow集
- 【编译原理】First集和Follow集
- 编译原理之FIRST集FOLLOW集
- 算符优先系列之(一)Firstvt和Lastvt集
- 编译原理之--FIRST集、FOLLOW集 和 SELECT集
- 编译原理 FIRST集和FOLLOW集的求法
- 编译原理:求First集和Follow集
- 编译原理:求First集与Follow集的方法
- 编译原理 FIRST集和FOLLOW集的求法
- 编译原理 FIRST集和FOLLOW集的求法
- 【编译原理】求First集和Follow集
- 编译原理:求First集与Follow集的方法
- 模板引擎
- C语言学习历程(十四) 结构体链表实现通讯录
- Python程序学习
- 华为机试::最高分是多少
- HDU2028:Lowest Common Multiple Plus
- <编译原理>——first集、follow集、firstvt集及lastvt集
- 日记:发散与收敛
- 1078. 字符串压缩与解压 (20)
- 共轭梯度法-matlab源码
- 拉伸
- 1077. 互评成绩计算 (20)
- QT下载
- Android实现自定义带文字和图片的Button
- 51Nod-1001 超时后看这里