创建解析树的目的是什么?
What is the purpose of creating a parse tree?
为代码创建解析树有什么用?这听起来可能很愚蠢,但我就是不明白它是如何工作的。我知道考虑优先级在算术运算中很有用。但是为什么要将代码转换成树呢?之后会发生什么?我似乎无法理解我可以用解析树做什么。我正在尝试编写一个非常小的解释器来执行算术运算和简单的 if 条件。我写了一个小语法。我有一个解析树。但是不知道怎么办。
好吧,如果你有一个解析树并且你想完成你的解释器,你要做的就是递归地评估树。
要评估代码块,您需要逐条评估它的每个语句。
要评估 if
语句,请评估条件表达式,并根据结果评估 then
分支或 else
分支(如果存在)。
要评估加法,您需要评估每个操作数,然后将它们相加。
有语法树意味着这些操作是自然的,它们通常涉及评估当前节点的(某些)子节点,然后可能将结果组合在一起。
为代码创建解析树有什么用?这听起来可能很愚蠢,但我就是不明白它是如何工作的。我知道考虑优先级在算术运算中很有用。但是为什么要将代码转换成树呢?之后会发生什么?我似乎无法理解我可以用解析树做什么。我正在尝试编写一个非常小的解释器来执行算术运算和简单的 if 条件。我写了一个小语法。我有一个解析树。但是不知道怎么办。
好吧,如果你有一个解析树并且你想完成你的解释器,你要做的就是递归地评估树。
要评估代码块,您需要逐条评估它的每个语句。
要评估 if
语句,请评估条件表达式,并根据结果评估 then
分支或 else
分支(如果存在)。
要评估加法,您需要评估每个操作数,然后将它们相加。
有语法树意味着这些操作是自然的,它们通常涉及评估当前节点的(某些)子节点,然后可能将结果组合在一起。