判断一个文法是否为LL(1)文法并构造预测分析表(First集和Follow集的求解方法&LL(1)文法的判断条件&预测分析表的构造)
目录
LL(1)文法的判断条件
- 判断一个文法是否为LL(1)文法并构造预测分析表(First集和Follow集的求解方法&LL(1)文法的判断条件&预测分析表的构造)
- 题目预览
- LL(1)文法的判断条件
- First集和Follow集的求解方法
- 预测分析表的构造方法
- 题目解答!!!看这里
1 文法不含左递归 2 对于每个非终结符A的各个候选式的终结首符号集两两不相交 即A→α1|α2|…|αn 则First(αi)∩First(αj)=Ø(1≤i,j≤n且i≠j) 3 对于文法中每个非终结符A 若它的某个候选式的终结首符号集包含ε 则First(αi)∩Follow(A)=Ø(1≤i≤n)
用白话来讲 文法不含左递归就是形如A->Aa|c B->Bb|c这种产生式右部第一个字符是产生式左部的情况 处理方法就引申到 消除左递归的方法 -改写左递归为右递归 即A->Aa|a改写为 A->cA’ A‘->aA’|ε
B->cB’ B‘->aB’|ε 大家应该很容易能从中找到规律 改写时将包含左递归的部分:对A->Aa|c来说 Aa先放一边 然后将c提前 后面补上A’ 然后写A’时 将Aa后面的a提前 并把A改写为A‘ 即A’->aA 不要忘记这里补上ε 每一个都是这样哦
预测分析表的构造方法行写终结符 列写非终结符 然后将找到对应的first集 将产生式填入对应非终结符&终结符的交叉位置 若First集中含有ε 则要把该非终结符的Follow集加入到预测分析表中
再说很多也不容易理解 我们看题来说明
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?