最左推导和最右推导作业 令文法 N ::= D | ND D ::=0|1|2|3|4|5|6|7|8|9 给出句子34的最左推导和最右推导。
时间: 2024-09-16 20:00:18 浏览: 52
编译作业2.1.jpg
最左推导和最右推导是分析语言文法生成式的过程,用于确定如何从基本非终结符开始,通过应用文法规则逐步构造出给定的句子。在这个例子中,我们有上下文无关文法 (CFG):
N ::= D | ND (N 可以由一个 D 或者一个 N 后面跟着一个 D 构成)
D ::= 0|1|2|3|4|5|6|7|8|9 (数字的产生式)
题目要求对句子 "34" 进行推导。
**最左推导(Leftmost Derivation, LMD)**:
1. 根据最左原则,首先尝试将整个句子作为 N 的子串处理,所以开始是最左 N。
2. N -> D,因此我们需要一个 D。
3. D -> 3,这是一个 D 的实例。
4. 现在我们有 NND,需要另一个 D。
5. D -> 4,再次构造一个 D。
6. 结果是 NND,符合原句 "34",停止推导。
最左推导序列:N -> D -> 3 -> N -> D -> 4
**最右推导(Rightmost Derivation, RMD)**:
1. 从最右边开始,先找到第一个 D。
2. D -> 4,这是最后一个 D。
3. 现在有 ND,需要一个完整的 N。
4. N -> D,接着找下一个 D。
5. D -> 3,再添加一个 D。
6. 最终得到 NND,即 "34"。
最右推导序列:D -> 4 -> N -> D -> 3
阅读全文