编译原理 First集和Follow集的求法】的更多相关文章

转载地址 https://blog.csdn.net/Alexander_Frank/article/details/51280798 自上而下分析: FIRST集求法 First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合. 1. 直接收取:对形如U->a-的产生式(其中a是终结符),把a收入到First(U)中 2. 反复传送:对形入U->P…
刚学first集和follow集的时候,如果上课老师没有讲明白或者自己没听明白,自己看的时候还真是有点难理解,不过结合着具体的题目可以理解的更快. 先看一下两种集合的求法: First集合的求法:      First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合. 1.  直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U…
import hjzgg.first.First; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; public class Follow { private Map<String, Set<Character>> first = null; private Map<St…
经过前阵子的各种百度以及对课本的反复研究,终于弄明白了follow集的求法,下面记录一下! 首先引用龙书里面的一段较为公式化的follow集求法的话: 计算所有非终结符号A的follow(A)集合时,不断应用下面的规则,直到再没有新的终结符号可以被加入到任意的follow集合中为止. (1)将 放到follow(S)中,其中S是开始符号,而 是输入右端的结束标记. (2)如果存在一个产生式A→αBβ,那么first(β)中除ε之外的所有符号都在follow(B)中. (3)如果存在一个产生式A→…
学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: First和Follow是为了画预测分析表的(在LL(1)分析法处): Firstvt和Lastvt是为了画算符优先关系表的(就是表里面填优先大于小于等于的那个). 并且它们都是 终结符 的集合. 这里主要讲它们如何构建的问题: 先说First和Follow First 如A->aB | CD 这里…
花了点时间弄了个大概,希望对和我一样的人有所帮助.   文法如下: E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|id ---------------------------------------------------------------------------------------------------------------------------------------------------- FIRST…
FIRST集的定义 : 设G=(VT,VN,P,S)是上下文无关文法 FIRST(a)={a|a=>*ab,a∈VT, a,b∈V*} 若a=>*ε则规定ε∈FIRST (a) FIRST(α)就是从α可能推导出的所有开头终结符号和可能的ε所构成的集合. FIRST集的分析方法 : 对于文法中的符号X∈VN∪VT,其FIRST(X)集合可反复应用下列规则计算,直到其FIRST(X)集合不再增大为止: 1)若 X∈VT,则FIRST(X)={X}. 2)若X∈VN,且具有形如X→aα的产生式(a…
转载于https://blog.csdn.net/johan_joe_king/article/details/79051993#comments 学编译原理的时候,感觉什么LL(1).LR(0).SLR(1).LALR(1)思想满天飞. 而且做题的时候,一不留意,一道题就写了三页纸了. 就拿今天这个玩意儿来讲,我真的是考试前花了最多的时间,搞懂了(差不多搞懂了)这是个什么玩意儿. 以下内容,做题的话应该够了而且很!容!易!理!解!,其他学术情况恕博主也是个菜鸡. 废话就不多扯了,能搜到看到这篇…
省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的   求FIRST集 情况壹  如果A只在→的右边出现,那么FIRST(A)={A},例子M→α,FIRST(α)={α} 情况貳  对于A→BCDEFG,                一 如果无B→ε,那么FIRST(A)={……}∪FIRST(B),接着求FIRST(B)                二 如果有B→ε,那么FIRST(A)={……}∪(FIRST(B)-{ε})∪FIRST(CDEFG),接着分别求F…
目录 First计算 Follow计算 Select计算 已知文法G[S]: S→MH|a H→LSo|ε K→dML|ε L→eHf M→K|bLM 判断G是否是LL(1)文法. First计算 First集合的定义就是某个非终结符表达式可以推导出来的第一个字符可以是什么 比如表达式S --> abb,它的First(S)={a} First(S)={a}+First(M)+First(H)+{ε}={a,b,d,e,ε} # S表达式存在单个的终结符a,添加{a} # S表达式以M开头,添加…