转载地址

http://dongtq2010.blog.163.com/blog/static/1750224812011520113332714/

学编译原理的时候,印象最深的莫过于这四个集合了,而且也十分为之纠结。
首先要知道First和Follow是一对,而Firstvt和Lastvt是一对。
然后要知道这两对都是干什么的。
First和Follow是为了画预测分析表的(在LL(1)分析法处)。
而Firstvt和Lastvt是为了画算符优先关系表的(就是表里面填优先大于小于等于的那个)。

然后要注意他们可都是终结符的集合。

再就是他们如何构建的问题了
先说First和Follow
First
如A->aB | CD
这里面包含了组成First(A)的两种情况:
           以终结符开头,    当然要把这个终结符放到A的First里
           以非终结符开头, 先把C的First放到A的First里
                                        再看如果C的First中有空的话就把D的First放到A的First里,如果D也有空的话往后依次类推
技巧:First一般从下往上找。
           如果要找A的First,我们要找A的定义式,即A在左边的式子,看着他的右边来找。

Follow
如S->(L) | aL | LC  
找Follow的三种情况:先在候选式(右边)中找到该非终结符,如L(注意例中只有一个定义,但找Follow要看到所有右边出现该非终结符的)
           如果L的右边是终结符,    那么这个终结符加入L的Follow
           如果L的右边是非终结符, 那么把这个非终结符的First除去空加到L的Follow中
           如果L处在末尾,               那么,'->'左边符号的Follow成为L的Follow
另外要注意的是:
           开始符号的Follow中要加上‘#’       
技巧:Follow一般从上往下找。
           如果要找L的Follow,要从式子的右边找到L,然后来找L的Follow,这与First是不同的。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再说下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,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt
           A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt

编译原理——求解First,Follow,Firstvt和Lastvt集合的更多相关文章

  1. 编译原理LL1文法Follow集算法实现

    import hjzgg.first.First; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set ...

  2. 编译原理-First集和Follow集

    刚学first集和follow集的时候,如果上课老师没有讲明白或者自己没听明白,自己看的时候还真是有点难理解,不过结合着具体的题目可以理解的更快. 先看一下两种集合的求法: First集合的求法:   ...

  3. 编译原理 First集和Follow集的求法

    转载地址 https://blog.csdn.net/Alexander_Frank/article/details/51280798 自上而下分析: FIRST集求法 First集合最终是对产生式右 ...

  4. 编译原理: FIRST(x) FOLLOW(x) SELECT(x)的计算

    目录 First计算 Follow计算 Select计算 已知文法G[S]: S→MH|a H→LSo|ε K→dML|ε L→eHf M→K|bLM 判断G是否是LL(1)文法. First计算 F ...

  5. 编译原理 First,Follow,select集求法

    参考:https://blog.csdn.net/CooperNiu/article/details/78524688

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

    <编译原理>-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集 上一篇:编译原理-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 本 ...

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

    <编译原理>求 FIRSTVT 集和 LASTVT 集的步骤 - 例题解析 算符优先关系表的构造中涉及到求 FIRSTVT 集和 LASTVT 集. 表示及含义: FIRSTVT(T) 非 ...

  8. (转)混乱的First、Follow、Firstvt和Lastvt

    转自: http://dongtq2010.blog.163.com/blog/static/1750224812011520113332714/ 学编译原理的时候,印象最深的莫过于这四个集合了,而且 ...

  9. FIRST集和FOLLOW集,FIRSTVT集和LASTVT集的求法

    学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: ...

随机推荐

  1. 图灵学院笔记-java虚拟机底层原理

    Table of Contents generated with DocToc 一.java虚拟机概述 二.栈内存解析 2.1 概述 2.2 栈帧内部结构 2.2.1 我们来解析一下compute() ...

  2. 手把手带你玩转 DialogFragment

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 思维导图 一.为什么要学习 DialogFragment 你还在用 Dialog 吗? 你还在经常烦恼 ...

  3. [jvm] -- 类加载过程篇

    类加载过程 系统加载 Class 类型的文件主要三步 加载 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class对象, ...

  4. OKex平台如何使用谷歌身份验证?

    打开OK交易所官网,找到谷歌身份验证器的开启界面 登陆后点击右上角头像-账户和安全 然后[安全设置]里出现“谷歌验证”的位置,点击开启按钮,到了二维码和密钥显示的界面 我们不使用谷歌身份验证器,因为需 ...

  5. git常用命令操作

    git常用命令 #查看配置 git config -l #查看系统config git config --system --list #查看当前用户(global)配置 git config --gl ...

  6. springboot(4)Druid作为项目数据源(添加监控)

    参考博客:恒宇少年:https://www.jianshu.com/p/e84e2709f383 Druid简介 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JD ...

  7. MySQL(一)简介与入门

    一.数据库简介 这个博客详细介绍:http://www.cnblogs.com/progor/p/8729798.html 二.MySQL的安装 这个博客详细介绍:https://blog.csdn. ...

  8. LQB2013A04倒置的标签

    这个题,一开始犯了一个很幼稚的错误 贴贴代码 #include<iostream> #include<stdio.h> #include<stdlib.h> #in ...

  9. HTML - XHTML

    HTML - XHTML XHTML 是以 XML 格式编写的 HTML.高佣联盟 www.cgewang.com 什么是 XHTML? XHTML 指的是可扩展超文本标记语言 XHTML 与 HTM ...

  10. [草稿]基于 Virtuoso 环境比较便捷的项目文件及权限管理方案

    https://www.cnblogs.com/yeungchie/ 假设如下情况: 1 项目名称 Project_01 2 包含 4 名研发用户,user01 和 user02 为前端工程师,use ...