如何为特定句子生成语法树,如 a+b*c where id->a|b|c?

How to generate syntax tree for a particular sentence like a+b*c where id->a|b|c?

考虑语法:E-> E+E|E-E|E*E|E/E|(E)|id

我已经尝试了至少 5 个小时来解决这个问题但失败了。请告诉我,

语法树是通过解析构建的,从某种意义上说,它是反向应用语法。所以你看到 a、b 和 c 只能来自 id,而 id 又只能来自 E。现在你在 E+E*E。您可以先减少 E+E 或减少 E*E,然后再减少另一个。结果 E 是树的根。两种可能的语法树之一(减少第一个 E*E 的语法树)是

  E
 /| \
E +   E
|    /|\
id  E * E
|   |   |
a   id  id
    |   |
    b   c

关于实施,您必须指定实施的地点和目的。