【发布时间】:2015-02-05 13:46:27
【问题描述】:
在 GHC 的流程中,有一个阶段是将 Haskell 源代码翻译成 Core,然后(不一定是下一步)将 Core 翻译成 STG。 但是,我无法理解一个问题——我们什么时候有“正常”代码(即纯文本),什么时候真正存在于内存中,比如抽象语法树 (AST)?
为了让我的问题更准确一点,我将它分成几部分:
1)在解析Haskell源文件阶段,我们是否立即构造Core语言的AST?如果不是,那么在我看来,我们必须构建完整的 Haskell AST(这似乎很奇怪),然后将它们转换为 Core 的 AST,或者首先将它们转换为 Core 中的文本表示,然后再次调用解析以获得 Core 的 AST。
2) 几乎相同的问题适用于 Core 到 STG 的转换(但在这种情况下,我想我可以假设我们拥有的是 Core 的 AST - 对吗?)
【问题讨论】:
标签: haskell compiler-construction compilation ghc abstract-syntax-tree