对于一个文法若消除了左递归,提取了左公因子后是否一定为LL(1)文法?试对下面的文法进行改写,并对改写后的文法进行判断。 (1)A→baB| B→Abb|a (2)A→Aa|b A→SB B→ab (3)S→Ab|Ba A→aA|a B→a
时间: 2024-05-21 11:10:14 浏览: 115
输入已经消除左递归的以及提取公共左因子的LL(1)文法,再输入相应的表达式,若分析成功,则在递归输出过程中输出"acc",若不成功,则有相应的报错以及位置指名。注意,要把同一个非终结符的产生式分成单个输入。他会自动计算first,follow,预测分析表的构造,但并不输出。
3星 · 编辑精心推荐
消除了左递归和提取左公因子并不一定能够保证文法是LL(1)文法,还需要满足其他条件,比如FIRST和FOLLOW集合的性质等。
对于第一条文法:
A→aB A→bA' A'→aB A'→ε B→Abb B→a
改写后的文法可以判断为LL(1)文法。
对于第二条文法:
A→bA' A'→aA' A'→ε A→SB S→Ab S→Ba B→ab
改写后的文法可以判断为LL(1)文法。
对于第三条文法:
S→Ab S→Ba A→aA A→a B→a
改写后的文法不能判断为LL(1)文法,因为S和A的产生式的FIRST集合有交集,无法通过选择预测来进行语法分析。需要进一步的改写。
阅读全文