为代码创建解析树有什么用?这可能听起来很愚蠢,但我无法理解它是如何工作的。我知道在算术运算中考虑优先级会很有用。但为什么要将代码转换为树?之后会发生什么?我似乎无法理解我可以用解析树做什么。我正在尝试编写一个非常小的解释器,它可以执行算术运算,并且只需条件即可。我写了一个小语法。我有一个解析树。但不知道如何处理它。
答案 0 :(得分:4)
好吧,如果你有一个解析树,并且想要完成你的翻译,你所做的就是递归地评估树。
要评估代码块,请逐一评估每个语句。
要评估if
语句,请评估条件表达式,并根据结果评估then
分支或else
分支(如果存在)。
要评估添加,请评估每个操作数,然后将它们一起添加。
语法树意味着这些类型的操作是自然的,它们通常涉及评估(某些)当前节点的子节点,然后可能将结果组合在一起。