怎样判断一个文法能否写成ll(1)文法
根据LL(1) 文法的定义来判断,分三步走:(1) 文法不含左递归
(2) 对文法中的任一个非终结符A的各个产生式的侯选首终结符集两两不相交,即:若
A-\u0026gt;α1|α2|…|αn ,则
First(αi)∩ First(αj) = φ ( i ≠ j )
(3) 对文法中的每个非终结符A,若它的某个首终结符集含有ε ,则
First(A)∩Follow(A) = φ
?如:判断下述文法是否是LL(1)文法:
S -\u0026gt; aAS|b
A -\u0026gt; bA|ε
(1) 该文法不含左递归
(2)First(S -\u0026gt;aAS)={a} First(S -\u0026gt;b)={b}
First(A -\u0026gt;bA)={b} First(A -\u0026gt;ε)={ε} S和A的侯选式的first集都不相交,满足条件2
(3) 由于ε∈First(A -\u0026gt;ε)
Follow(A)=First(S)={a,b}
Follow(A) ∩ First(A-\u0026gt;bA) ) ≠ φ
【怎样判断一个文法能否写成ll(1)文法】 不满足条件3,则不是LL(1)文法
■网友
先提取左公共因子,再消除左递归,这样就有可能变为LL(1)文法。然后要分别写出改写后文法的FIRST集、FOLLOW集、SELECT集,如果相同左部的SELECT集的交集不为空集,则为LL(1)文法。
■网友
非常抱歉,编译原理我还处于刚接触不多的阶段,这个问题帮不到你了
■网友
操作上说,eleminate left recursion并且left factor这个文法。如果这个文法没有歧义的话,就可以写成ll(1)文法。你要证明它是ll(1)的话,书上都有定义: 对于一个nonterminal 1. first set没有交的部分 2. 至多有一个epsilon production 3. 如果有epsilon production,则follow与first交集为空。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 同比■同比增长7.1%!2021年的第一个节你花了多少钱?
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 有必要重新开个C店吗
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 汽车|长安UNI-K又将开创一个新的"引力"纪元?
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
