据我了解,解析器会创建一个解析树,然后将其丢弃。但是,它也可以弹出一个抽象语法树,编译器据称可以利用它。
我的印象是解析树和抽象语法树都是在解析阶段创建的。那么有人可以解释为什么这些不同吗?
3
为什么它们必须有所不同?从两个略有不同的角度来看,它们不是同一件事吗?
—
S.Lott
不确定我是否理解这两种“略有不同的观点” :-(
—
组合逻辑
这才是重点。他们是同一回事,因此很混乱。根据您的观点,您只是使用了不同的单词:解析与代码生成(在解释器的情况下为执行)。
—
S.Lott 2012年
没有区别。稍加想象,就可以为任何可能的抽象语法树发明一种语法表示。由于缺乏想象力,Lisp的S表达式将成为适用于所有内容的默认语法。
—
SK-logic
大家在发表评论之前应该已经阅读了答案。有所不同,但是将它们分开或组合是一个实现问题。
—
保罗