创建解析树的目的是什么?

时间:2016-07-27 19:48:46

标签: parsing compiler-construction programming-languages

为代码创建解析树有什么用?这可能听起来很愚蠢,但我无法理解它是如何工作的。我知道在算术运算中考虑优先级会很有用。但为什么要将代码转换为树?之后会发生什么?我似乎无法理解我可以用解析树做什么。我正在尝试编写一个非常小的解释器,它可以执行算术运算,并且只需条件即可。我写了一个小语法。我有一个解析树。但不知道如何处理它。

1 个答案:

答案 0 :(得分:4)

好吧,如果你有一个解析树,并且想要完成你的翻译,你所做的就是递归地评估树。

要评估代码块,请逐一评估每个语句。

要评估if语句,请评估条件表达式,并根据结果评估then分支或else分支(如果存在)。

要评估添加,请评估每个操作数,然后将它们一起添加。

语法树意味着这些类型的操作是自然的,它们通常涉及评估(某些)当前节点的子节点,然后可能将结果组合在一起。