这个解析树是如何生成的?

问题描述

我在阅读 https://www.cs.odu.edu/~zeil/cs390/f16/Public/cfg/index.html 时遇到了这个示例语法:

Expr -> Expr + Term  
Expr -> Expr - Term  
Expr -> Term  
Term -> Term * Factor  
Term -> Term/Factor  
Factor -> (Expr)  
Factor -> id

使用此语法,为字符串“a - b - c”给出以下解析树:

parse tree

我的问题是,如何从 Term 非终结符生成 Factor 非终结符?我不明白这是如何在语法中完成的。对我来说,语法似乎需要一个额外的产生式规则,比如 Term -> Factor。

解决方法

完全正确。语法缺少产生式 Term ⇒ Factor,如解析树中所示。