第四章 习题4
1:考虑上下文无关文法: S->S S +|S S *|a 以及串aa + a* (1)给出这个串的一个最左推导 S -> S S * -> S S + S * -> a S + S * -> a a + S * -> aa + a* (3)给出这个串的一棵语法分析树 习题4
1:下面是一个只包含符号a 和b 的正则表达式的文法
它使用+替代表示并运算的符号|,以避免和文法中作为元符号使用的竖线相混淆: rexpr rexpr + rterm | rterm rtermrterm rfactor | rfactor rfactor rfactor * | rprimary rprimarya | b 1)对这个文法提取公因子 2)提取公因子的变换使这个文法适用于自顶向下的语法分析技术吗
3)提取公因子之后,原文法中消除左递归 4)得到的文法适用于自顶向下的语法分析吗
解 1) 提取左公因子之后的文法变为 rexpr rexpr + rterm | rterm rtermrterm rfactor | rfactor rfactor rfactor * | rprimary rprimarya | b 2) 不可以,文法中存在左递归,而自顶向下技术不适合左递归文法 3) 消除左递归后的文法 rexpr -> rterm rexpr’ rexpr’-> + rterm rexpr’| rterm-> rfactor rterm’ rterm’-> rfactor rterm’| rfactor-> rprimay rfactor’ rfactor’-> *rfactor’| rprimary-> a | b 4)该文法无左递归,适合于自顶向下的语法分析 习题4
1:为下面的每一个文法设计一个预测分析器,并给出预测分析表