如何为特定句子生成语法树,如 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
关于实施,您必须指定实施的地点和目的。
考虑语法: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
关于实施,您必须指定实施的地点和目的。