【编译原理】First /Follow /FirstVt /LastVt 集合的简单学习
2018-03-07 23:00
295 查看
最近准备考研复试,专业课里有一门编译原理,乍看很难懂,但仅应对几个考点又非常容易上手:
First和Follow用来构造预测分析表(在LL(1)分析法处)。
Firstvt和Lastvt用来构造算符优先关系表(<=>三种关系)。
①First(A)
直观上来说First(A)即为非终结符A的产生式首个终结符的集合(因为有多个产生式)。
有以下几种情况:
A->aB···
First(A)={a}
A->C···|D···
C->c···
D->d···
First(A)={c,d}
A->CD···
C->c···
First(A)={c}
A->CD···
C->c···|ε
D->d···
First(A)={c,d}(就是如果第一个非终结符可能推出空串,则第二个非终结符的First(D)集合便也加入,以此类推)
这就是求First集合的所有情况。
②Follow(B)
直观上来说就是跟在非终结符L之后的首个终结符的集合,不能包含空串。
有以下几种情况
S->···aBc···
Follow(B)={c}
S->···aBCD···
C->c···
Follow(B)={c}
({c}即为First(C),如果C可能推出ε空串,则添加First(D),以此类推)
S->···B
S->Sa···
Follow(B)=Follow(S)={a}
以上便是求Follow集的所有情况。
③FirstVt(A)
直观上来说就是求非终结符A产生式的首个终结符,但不同于First。
有以下几种情况:
A->a.......,以终结符开头,该终结符入Firstvt(A)
A->B.......,以非终结符开头,该非终结符的Firstvt入Firstvt(A)
A->Ba.....,先以非终结符开头,紧跟终结符,则终结符入Firstvt(A)
这就是求FirstVt集合的所有情况。
④LastVt(A)
直观上来说就是求非终结符A产生式的最右一个终结符,但不同于Follow。
有以下几种情况:
A->.......a,即以终结符结尾,该终结符入Lastvt(A)
A->.......B,即以非终结符结尾,该非终结符的Lastvt入Lastvt(A)
A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt(A)
这就是求LastVt集合的所有情况。
First和Follow用来构造预测分析表(在LL(1)分析法处)。
Firstvt和Lastvt用来构造算符优先关系表(<=>三种关系)。
①First(A)
直观上来说First(A)即为非终结符A的产生式首个终结符的集合(因为有多个产生式)。
有以下几种情况:
A->aB···
First(A)={a}
A->C···|D···
C->c···
D->d···
First(A)={c,d}
A->CD···
C->c···
First(A)={c}
A->CD···
C->c···|ε
D->d···
First(A)={c,d}(就是如果第一个非终结符可能推出空串,则第二个非终结符的First(D)集合便也加入,以此类推)
这就是求First集合的所有情况。
②Follow(B)
直观上来说就是跟在非终结符L之后的首个终结符的集合,不能包含空串。
有以下几种情况
S->···aBc···
Follow(B)={c}
S->···aBCD···
C->c···
Follow(B)={c}
({c}即为First(C),如果C可能推出ε空串,则添加First(D),以此类推)
S->···B
S->Sa···
Follow(B)=Follow(S)={a}
以上便是求Follow集的所有情况。
③FirstVt(A)
直观上来说就是求非终结符A产生式的首个终结符,但不同于First。
有以下几种情况:
A->a.......,以终结符开头,该终结符入Firstvt(A)
A->B.......,以非终结符开头,该非终结符的Firstvt入Firstvt(A)
A->Ba.....,先以非终结符开头,紧跟终结符,则终结符入Firstvt(A)
这就是求FirstVt集合的所有情况。
④LastVt(A)
直观上来说就是求非终结符A产生式的最右一个终结符,但不同于Follow。
有以下几种情况:
A->.......a,即以终结符结尾,该终结符入Lastvt(A)
A->.......B,即以非终结符结尾,该非终结符的Lastvt入Lastvt(A)
A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt(A)
这就是求LastVt集合的所有情况。
相关文章推荐
- 编译原理学习笔记---FIRST和FOLLOW
- 编译原理简单语法分析器(first,follow,分析表)源码下载
- 编译原理--First,Follow,Firstvt和Lastvt
- First,Follow,Firstvt和Lastvt (编译原理)
- First,Follow,Firstvt和Lastvt (编译原理)
- (转载)First and Follow Sets(编译原理)
- 编译原理的FOLLOW和FIRST
- 编译原理---(预测分析first,follow)
- 编译原理:First&Follow集判定
- 一步步学习汇编系列(6)-从一个简单的程序谈编译,连接,执行,跟踪的原理
- 深入Java集合学习系列:HashMap的实现原理
- 深入Java集合学习系列:ArrayList的实现原理
- C#基础--.net平台的重要组成部分以及.net程序简单的编译原理
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 深入java集合学习系列-ConcurrentHashMap实现原理
- java集合深入学习(1):HashMap的实现原理解读
- 编译原理第二章简单的一遍编译器
- [转]少走弯路:学习编译原理的相关建议
- 编译原理学习笔记:(第一章:引论——1.1节)